From 70cd23c019a2766eea4a8c9c20b674bc83b181e3 Mon Sep 17 00:00:00 2001 From: Martin Liska Date: Fri, 7 Apr 2017 12:36:21 +0200 Subject: [PATCH] Add function part to a same comdat group (PR ipa/80212). 2017-04-07 Martin Liska PR ipa/80212 * g++.dg/ipa/pr80212.C: New test. 2017-04-07 Martin Liska PR ipa/80212 * ipa-split.c (split_function): Add function part to a same comdat group. From-SVN: r246759 --- gcc/ChangeLog | 6 ++++++ gcc/ipa-split.c | 3 +++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/ipa/pr80212.C | 18 ++++++++++++++++++ 4 files changed, 32 insertions(+) create mode 100644 gcc/testsuite/g++.dg/ipa/pr80212.C diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e6ad7cefd92..6237a2ce40d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2017-04-07 Martin Liska + + PR ipa/80212 + * ipa-split.c (split_function): Add function part to a same comdat + group. + 2017-04-07 Richard Biener PR middle-end/80341 diff --git a/gcc/ipa-split.c b/gcc/ipa-split.c index da3c2c62344..ae1de6f1e63 100644 --- a/gcc/ipa-split.c +++ b/gcc/ipa-split.c @@ -1363,6 +1363,9 @@ split_function (basic_block return_bb, struct split_point *split_point, /* Let's take a time profile for splitted function. */ node->tp_first_run = cur_node->tp_first_run + 1; + if (cur_node->same_comdat_group) + node->add_to_same_comdat_group (cur_node); + /* For usual cloning it is enough to clear builtin only when signature changes. For partial inlining we however can not expect the part of builtin implementation to have same semantic as the whole. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 565485a0218..43e7bec066c 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2017-04-07 Martin Liska + + PR ipa/80212 + * g++.dg/ipa/pr80212.C: New test. + 2017-04-07 Thomas Preud'homme * gcc.dg/tree-ssa/pr79800.c: Require c99_runtime. diff --git a/gcc/testsuite/g++.dg/ipa/pr80212.C b/gcc/testsuite/g++.dg/ipa/pr80212.C new file mode 100644 index 00000000000..60d3b613035 --- /dev/null +++ b/gcc/testsuite/g++.dg/ipa/pr80212.C @@ -0,0 +1,18 @@ +// PR ipa/80212 +// { dg-options "-O2 --param partial-inlining-entry-probability=403796683 -fno-early-inlining" } + +struct b +{ + virtual b *c () const; +}; +struct d : virtual b +{ +}; +struct e : d +{ + e * + c () const + { + } +}; +main () { e a; } -- 2.30.2