9.1.1-1
This commit is contained in:
parent
94498d7104
commit
672c273c6d
39
gcc9-pr90303.patch
Normal file
39
gcc9-pr90303.patch
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
2019-05-03 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
PR tree-optimization/90303
|
||||||
|
* ipa-devirt.c (obj_type_ref_class, get_odr_type): Don't use
|
||||||
|
TYPE_CANONICAL for TYPE_STRUCTURAL_EQUALITY_P types in !in_lto_p mode.
|
||||||
|
|
||||||
|
* g++.target/i386/pr90303.C: New test.
|
||||||
|
|
||||||
|
--- gcc/ipa-devirt.c (revision 270834)
|
||||||
|
+++ gcc/ipa-devirt.c (revision 270835)
|
||||||
|
@@ -2020,7 +2020,7 @@ obj_type_ref_class (const_tree ref)
|
||||||
|
ref = TREE_VALUE (TYPE_ARG_TYPES (ref));
|
||||||
|
gcc_checking_assert (TREE_CODE (ref) == POINTER_TYPE);
|
||||||
|
tree ret = TREE_TYPE (ref);
|
||||||
|
- if (!in_lto_p)
|
||||||
|
+ if (!in_lto_p && !TYPE_STRUCTURAL_EQUALITY_P (ret))
|
||||||
|
ret = TYPE_CANONICAL (ret);
|
||||||
|
else
|
||||||
|
ret = get_odr_type (ret)->type;
|
||||||
|
@@ -2042,7 +2042,7 @@ get_odr_type (tree type, bool insert)
|
||||||
|
int base_id = -1;
|
||||||
|
|
||||||
|
type = TYPE_MAIN_VARIANT (type);
|
||||||
|
- if (!in_lto_p)
|
||||||
|
+ if (!in_lto_p && !TYPE_STRUCTURAL_EQUALITY_P (type))
|
||||||
|
type = TYPE_CANONICAL (type);
|
||||||
|
|
||||||
|
gcc_checking_assert (can_be_name_hashed_p (type)
|
||||||
|
--- gcc/testsuite/g++.target/i386/pr90303.C (nonexistent)
|
||||||
|
+++ gcc/testsuite/g++.target/i386/pr90303.C (revision 270835)
|
||||||
|
@@ -0,0 +1,8 @@
|
||||||
|
+// PR tree-optimization/90303
|
||||||
|
+// { dg-do compile { target ia32 } }
|
||||||
|
+// { dg-additional-options "-O2" }
|
||||||
|
+
|
||||||
|
+struct A { virtual void foo (); };
|
||||||
|
+template <class> class B : A {};
|
||||||
|
+typedef void (__attribute__((fastcall)) F) ();
|
||||||
|
+B<F> e;
|
Loading…
Reference in New Issue
Block a user