From: Jan Hubicka Date: Mon, 2 Mar 2015 20:10:56 +0000 (+0100) Subject: re PR ipa/64988 (ICE: verify_cgraph_node failed: Alias and target's comdat groups... X-Git-Tag: releases/gcc-5.1.0~659 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b91b562cf2764dc10ba00a9473287728a59c4443;p=thirdparty%2Fgcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index da14db851574..f84b46281da0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2015-03-02 Jan Hubicka + + PR ipa/64988 + * ipa-inline-transform.c (clone_inlined_nodes): Do not dissolve + comdat groups. + 2015-03-02 Jan Hubicka Aldy Hernandez diff --git a/gcc/ipa-inline-transform.c b/gcc/ipa-inline-transform.c index 52493cc4d001..38a98dbe43cb 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 9c4b587f6f0c..135f73498b4f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2015-03-02 Jan Hubicka + + PR ipa/64988 + * g++.dg/torture/pr64988.C: New testcase. + 2015-03-02 Tobias Burnus * 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 000000000000..b9cf0e004f5a --- /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;