diff options
author | Martin Jambor <mjambor@suse.cz> | 2019-11-25 11:09:42 +0100 |
---|---|---|
committer | Martin Jambor <jamborm@gcc.gnu.org> | 2019-11-25 11:09:42 +0100 |
commit | ed649cda944c2ff0b77f0203bf83f106e930c5e8 (patch) | |
tree | d1cb5d2e303d82acf499b8d891ab40e4e3abcef7 /gcc | |
parent | 5b01f1a57cc90bcee58ccf75e6062748e1d66448 (diff) | |
download | gcc-ed649cda944c2ff0b77f0203bf83f106e930c5e8.zip gcc-ed649cda944c2ff0b77f0203bf83f106e930c5e8.tar.gz gcc-ed649cda944c2ff0b77f0203bf83f106e930c5e8.tar.bz2 |
Make IPA-SRA follow comdat-local rules (PR 91956)
2019-11-25 Martin Jambor <mjambor@suse.cz>
PR ipa/91956
* ipa-sra.c (process_isra_node_results): Put the new node to the
same comdat group as the original node.
testsuite/
* g++.dg/ipa/pr91956.C: New test.
From-SVN: r278669
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/ipa-sra.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/ipa/pr91956.C | 27 |
4 files changed, 41 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 25adf2e..a15cc75 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2019-11-25 Martin Jambor <mjambor@suse.cz> + + PR ipa/91956 + * ipa-sra.c (process_isra_node_results): Put the new node to the + same comdat group as the original node. + 2019-11-25 Georg-Johann Lay <avr@gjlay.de> Build double32 / long-double32 multilibs if needed. diff --git a/gcc/ipa-sra.c b/gcc/ipa-sra.c index 08606ae..c6ed0f4 100644 --- a/gcc/ipa-sra.c +++ b/gcc/ipa-sra.c @@ -3759,6 +3759,9 @@ process_isra_node_results (cgraph_node *node, = node->create_virtual_clone (callers, NULL, new_adjustments, "isra", suffix_counter); suffix_counter++; + if (node->same_comdat_group) + new_node->add_to_same_comdat_group (node); + new_node->calls_comdat_local = node->calls_comdat_local; if (dump_file) fprintf (dump_file, " Created new node %s\n", new_node->dump_name ()); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 9ff8a95..ce59906 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2019-11-25 Martin Jambor <mjambor@suse.cz> + + PR ipa/91956 + * g++.dg/ipa/pr91956.C: New test. + 2019-11-23 Thomas Koenig <tkoenig@gcc.gnu.org> Harald Anlauf <anlauf@gmx.de> diff --git a/gcc/testsuite/g++.dg/ipa/pr91956.C b/gcc/testsuite/g++.dg/ipa/pr91956.C new file mode 100644 index 0000000..6f6edc3 --- /dev/null +++ b/gcc/testsuite/g++.dg/ipa/pr91956.C @@ -0,0 +1,27 @@ +/* { dg-do compile } */ +/* { dg-options "-Os -std=c++11 -fno-strict-aliasing -fno-tree-fre -fno-tree-vrp" } */ + +int count = 0; +struct VB +{ + VB() {++count;} +}; + +struct B : virtual VB +{ + B() : B(42) {} + B(int) {} +}; + +struct D : B +{ + D() {} + D(int) : D() {} +}; + +int main() +{ + D d{42}; + if (count != 1) + __builtin_abort(); +} |