diff options
author | Jan Hubicka <hubicka@ucw.cz> | 2015-03-02 21:10:56 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2015-03-02 20:10:56 +0000 |
commit | b91b562cf2764dc10ba00a9473287728a59c4443 (patch) | |
tree | d4aa397f0c4a41f1add6cdeb49b9ef6ff2df9801 | |
parent | bc81b5ce9b1b1433c29390c1179b14a0048fd615 (diff) | |
download | gcc-b91b562cf2764dc10ba00a9473287728a59c4443.zip gcc-b91b562cf2764dc10ba00a9473287728a59c4443.tar.gz gcc-b91b562cf2764dc10ba00a9473287728a59c4443.tar.bz2 |
re PR ipa/64988 (ICE: verify_cgraph_node failed: Alias and target's comdat groups differs with -fdeclone-ctor-dtor)
PR ipa/64988
* ipa-inline-transform.c (clone_inlined_nodes): Do not dissolve
comdat groups.
* g++.dg/torture/pr64988.C: New testcase.
From-SVN: r221123
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/ipa-inline-transform.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/torture/pr64988.C | 12 |
4 files changed, 25 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index da14db8..f84b462 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2015-03-02 Jan Hubicka <hubicka@ucw.cz> + + PR ipa/64988 + * ipa-inline-transform.c (clone_inlined_nodes): Do not dissolve + comdat groups. + 2015-03-02 Jan Hubicka <hubicka@ucw.cz> Aldy Hernandez <aldyh@redhat.com> diff --git a/gcc/ipa-inline-transform.c b/gcc/ipa-inline-transform.c index 52493cc..38a98db 100644 --- a/gcc/ipa-inline-transform.c +++ b/gcc/ipa-inline-transform.c @@ -213,7 +213,7 @@ clone_inlined_nodes (struct cgraph_edge *e, bool duplicate, For now we keep the ohter functions in the group in program until cgraph_remove_unreachable_functions gets rid of them. */ gcc_assert (!e->callee->global.inlined_to); - e->callee->dissolve_same_comdat_group_list (); + e->callee->remove_from_same_comdat_group (); if (e->callee->definition && inline_account_function_p (e->callee)) { @@ -243,7 +243,7 @@ clone_inlined_nodes (struct cgraph_edge *e, bool duplicate, } } else - e->callee->dissolve_same_comdat_group_list (); + e->callee->remove_from_same_comdat_group (); e->callee->global.inlined_to = inlining_into; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 9c4b587..135f734 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2015-03-02 Jan Hubicka <hubicka@ucw.cz> + + PR ipa/64988 + * g++.dg/torture/pr64988.C: New testcase. + 2015-03-02 Tobias Burnus <burnus@net-b.de> * gfortran.dg/coarray_atomic_6.f90: New. diff --git a/gcc/testsuite/g++.dg/torture/pr64988.C b/gcc/testsuite/g++.dg/torture/pr64988.C new file mode 100644 index 0000000..b9cf0e0 --- /dev/null +++ b/gcc/testsuite/g++.dg/torture/pr64988.C @@ -0,0 +1,12 @@ +// { dg-do compile } +// { dg-options "-O -fdeclone-ctor-dtor" } +struct A { + virtual ~ A (); +}; + +struct B : virtual A {}; +struct C : virtual A {}; + +struct D : B, C {}; + +D d; |