aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@ucw.cz>2015-03-02 21:10:56 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2015-03-02 20:10:56 +0000
commitb91b562cf2764dc10ba00a9473287728a59c4443 (patch)
treed4aa397f0c4a41f1add6cdeb49b9ef6ff2df9801 /gcc
parentbc81b5ce9b1b1433c29390c1179b14a0048fd615 (diff)
downloadgcc-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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/ipa-inline-transform.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/torture/pr64988.C12
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;