[Bug bootstrap/64612] [5 Regression] profiledbootstrap failures
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64612 --- Comment #19 from ro at CeBiTec dot Uni-Bielefeld.DE ro at CeBiTec dot Uni-Bielefeld.DE --- --- Comment #18 from Jakub Jelinek jakub at gcc dot gnu.org --- Created attachment 34573 -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=34573action=edit gcc5-pr64612.patch Lightly tested patch to do that (tested just on x86_64-linux). Worked for me. Tested on * Solaris 10/x86 (as/ld and gas/ld; no comdat in ld) * Solaris 10/x86 (gas/gld, comdat) * Solaris 11/x86 (as/ld and gas/ld; comdat in ld) The new comdat_group keyword needs documenting in sourcebuild.texi, though. Thanks. Rainer
[Bug bootstrap/64612] [5 Regression] profiledbootstrap failures
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64612 --- Comment #20 from Jakub Jelinek jakub at gcc dot gnu.org --- Author: jakub Date: Wed Jan 28 07:45:56 2015 New Revision: 220198 URL: https://gcc.gnu.org/viewcvs?rev=220198root=gccview=rev Log: PR bootstrap/64612 * lib/target-supports.exp (check_effective_target_comdat_group): New. * g++.dg/ipa/pr64612.C: Guard scan-assembler test with { target comdat_group }. * doc/sourcebuild.texi (comdat_group): Document. Modified: trunk/gcc/ChangeLog trunk/gcc/doc/sourcebuild.texi trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/g++.dg/ipa/pr64612.C trunk/gcc/testsuite/lib/target-supports.exp
[Bug bootstrap/64612] [5 Regression] profiledbootstrap failures
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64612 Jakub Jelinek jakub at gcc dot gnu.org changed: What|Removed |Added Status|REOPENED|RESOLVED Resolution|--- |FIXED --- Comment #21 from Jakub Jelinek jakub at gcc dot gnu.org --- Even the testcase issue is fixed now.
[Bug bootstrap/64612] [5 Regression] profiledbootstrap failures
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64612 --- Comment #18 from Jakub Jelinek jakub at gcc dot gnu.org --- Created attachment 34573 -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=34573action=edit gcc5-pr64612.patch Lightly tested patch to do that (tested just on x86_64-linux).
[Bug bootstrap/64612] [5 Regression] profiledbootstrap failures
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64612 --- Comment #16 from ro at CeBiTec dot Uni-Bielefeld.DE ro at CeBiTec dot Uni-Bielefeld.DE --- --- Comment #15 from Jakub Jelinek jakub at gcc dot gnu.org --- If you are willing to cook up an effective-target for that in lib/target-supports.exp, sure, go ahead. Given the complexity of the HAVE_COMDAT_GROUP test in gcc/configure.ac, the best way seems to have gcc define something like __GCC_HAVE_COMDAT_GROUP and use that in target-supports.exp. Rainer
[Bug bootstrap/64612] [5 Regression] profiledbootstrap failures
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64612 --- Comment #17 from Jakub Jelinek jakub at gcc dot gnu.org --- (In reply to r...@cebitec.uni-bielefeld.de from comment #16) --- Comment #15 from Jakub Jelinek jakub at gcc dot gnu.org --- If you are willing to cook up an effective-target for that in lib/target-supports.exp, sure, go ahead. Given the complexity of the HAVE_COMDAT_GROUP test in gcc/configure.ac, the best way seems to have gcc define something like __GCC_HAVE_COMDAT_GROUP and use that in target-supports.exp. Rainer The predefined macros aren't zero cost, so I'd strongly prefer not to abuse them. Just compiling something where comdat groups should be used and scanning the assembly should be even easier.
[Bug bootstrap/64612] [5 Regression] profiledbootstrap failures
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64612 --- Comment #13 from Jakub Jelinek jakub at gcc dot gnu.org --- g++.dg/abi/comdat1.C is guarded with { target *-*-*gnu* }, perhaps this test should be too.
[Bug bootstrap/64612] [5 Regression] profiledbootstrap failures
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64612 --- Comment #12 from Rainer Orth ro at gcc dot gnu.org --- Created attachment 34511 -- https://gcc.gnu.org/bugzilla/attachment.cgi?id=34511action=edit Solaris 10/x86 assembler output
[Bug bootstrap/64612] [5 Regression] profiledbootstrap failures
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64612 --- Comment #14 from ro at CeBiTec dot Uni-Bielefeld.DE ro at CeBiTec dot Uni-Bielefeld.DE --- --- Comment #13 from Jakub Jelinek jakub at gcc dot gnu.org --- g++.dg/abi/comdat1.C is guarded with { target *-*-*gnu* }, perhaps this test should be too. While that would work, it's overeager: the test passes on Solaris 11 (with COMDAT support both with as and gas) just fine. Rainer
[Bug bootstrap/64612] [5 Regression] profiledbootstrap failures
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64612 --- Comment #15 from Jakub Jelinek jakub at gcc dot gnu.org --- If you are willing to cook up an effective-target for that in lib/target-supports.exp, sure, go ahead.
[Bug bootstrap/64612] [5 Regression] profiledbootstrap failures
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64612 Rainer Orth ro at gcc dot gnu.org changed: What|Removed |Added Status|RESOLVED|REOPENED CC||ro at gcc dot gnu.org Resolution|FIXED |--- --- Comment #11 from Rainer Orth ro at gcc dot gnu.org --- The new testcase FAILs on Solaris 10: FAIL: g++.dg/ipa/pr64612.C scan-assembler _ZN5QListI7QStringED1Ev probably because this is a non-COMDAT target. I'm attaching the Solaris 10/x86 assembler output. Rainer
[Bug bootstrap/64612] [5 Regression] profiledbootstrap failures
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64612 --- Comment #9 from Markus Trippelsdorf trippels at gcc dot gnu.org --- Author: trippels Date: Fri Jan 16 11:12:52 2015 New Revision: 219721 URL: https://gcc.gnu.org/viewcvs?rev=219721root=gccview=rev Log: g++.dg/ipa/pr64612.C: New test. 2015-01-16 Markus Trippelsdorf mar...@trippelsdorf.de PR ipa/64163 PR ipa/64612 * g++.dg/ipa/pr64612.C: New test. Added: trunk/gcc/testsuite/g++.dg/ipa/pr64612.C Modified: trunk/gcc/testsuite/ChangeLog
[Bug bootstrap/64612] [5 Regression] profiledbootstrap failures
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64612 --- Comment #10 from Markus Trippelsdorf trippels at gcc dot gnu.org --- *** Bug 64163 has been marked as a duplicate of this bug. ***
[Bug bootstrap/64612] [5 Regression] profiledbootstrap failures
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64612 Jakub Jelinek jakub at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |NEW Last reconfirmed||2015-01-15 Ever confirmed|0 |1 --- Comment #2 from Jakub Jelinek jakub at gcc dot gnu.org --- r218024 broke this, the _ZN16wide_int_storageC1ISt4pairIP7rtx_def12machine_modeEEERKT_ alias to _ZN16wide_int_storageC2ISt4pairIP7rtx_def12machine_modeEEERKT_ is with it incorrectly removed from dwarf2out.s.
[Bug bootstrap/64612] [5 Regression] profiledbootstrap failures
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64612 --- Comment #5 from Jan Hubicka hubicka at gcc dot gnu.org --- Oops, wrong if Index: ipa-inline-transform.c === --- ipa-inline-transform.c (revision 219674) +++ ipa-inline-transform.c (working copy) @@ -139,7 +139,7 @@ can_remove_node_now_p (struct cgraph_nod /* When we see same comdat group, we need to be sure that all items can be removed. */ - if (!node-same_comdat_group) + if (!node-same_comdat_group || !node-externally_visible) return true; for (next = dyn_castcgraph_node * (node-same_comdat_group); next != node; next = dyn_castcgraph_node * (next-same_comdat_group)) @@ -310,6 +310,7 @@ inline_call (struct cgraph_edge *e, bool while (alias alias != callee) { if (!alias-callers + !e-next_caller !e-prev_caller can_remove_node_now_p (alias, e)) { next_alias = alias-get_alias_target ();
[Bug bootstrap/64612] [5 Regression] profiledbootstrap failures
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64612 --- Comment #3 from Jan Hubicka hubicka at gcc dot gnu.org --- Seems like dup of PR64583
[Bug bootstrap/64612] [5 Regression] profiledbootstrap failures
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64612 --- Comment #4 from Jan Hubicka hubicka at gcc dot gnu.org --- I am testing Index: ipa-inline-transform.c === --- ipa-inline-transform.c (revision 219674) +++ ipa-inline-transform.c (working copy) @@ -139,7 +137,7 @@ can_remove_node_now_p (struct cgraph_nod /* When we see same comdat group, we need to be sure that all items can be removed. */ - if (!node-same_comdat_group) + if (!node-same_comdat_group || !node-externally_visible) return true; for (next = dyn_castcgraph_node * (node-same_comdat_group); next != node; next = dyn_castcgraph_node * (next-same_comdat_group)) @@ -303,7 +301,7 @@ inline_call (struct cgraph_edge *e, bool /* If aliases are involved, redirect edge to the actual destination and possibly remove the aliases. */ - if (e-callee != callee) + if (e-callee != callee !e-next_caller !e-prev_caller) { struct cgraph_node *alias = e-callee, *next_alias; e-redirect_callee (callee);
[Bug bootstrap/64612] [5 Regression] profiledbootstrap failures
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64612 Jan Hubicka hubicka at gcc dot gnu.org changed: What|Removed |Added CC||trippels at gcc dot gnu.org --- Comment #6 from Jan Hubicka hubicka at gcc dot gnu.org --- *** Bug 64583 has been marked as a duplicate of this bug. ***
[Bug bootstrap/64612] [5 Regression] profiledbootstrap failures
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64612 --- Comment #7 from Jan Hubicka hubicka at gcc dot gnu.org --- Author: hubicka Date: Thu Jan 15 23:11:49 2015 New Revision: 219696 URL: https://gcc.gnu.org/viewcvs?rev=219696root=gccview=rev Log: PR ipa/64612 * ipa-inline-transform.c (can_remove_node_now_p): Fix handling of comdat locals. (inline_call): Fix removal of aliases. Modified: trunk/gcc/ChangeLog trunk/gcc/ipa-inline-transform.c
[Bug bootstrap/64612] [5 Regression] profiledbootstrap failures
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64612 Jan Hubicka hubicka at gcc dot gnu.org changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |FIXED --- Comment #8 from Jan Hubicka hubicka at gcc dot gnu.org --- Fixed.
[Bug bootstrap/64612] [5 Regression] profiledbootstrap failures
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64612 Jakub Jelinek jakub at gcc dot gnu.org changed: What|Removed |Added Priority|P3 |P1 Target Milestone|--- |5.0
[Bug bootstrap/64612] [5 Regression] profiledbootstrap failures
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64612 --- Comment #1 from Jakub Jelinek jakub at gcc dot gnu.org --- So, in simplify-rtx.o we have: 5238 01190002 R_X86_64_PC32 _ZN16wide_int_storageC1ISt4pairIP7rtx_def12machine_modeEEERKT_ - 4 at that spot, and: 281: 156 FUNCWEAK DEFAULT 56 _ZN16wide_int_storageC1ISt4pairIP7rtx_def12machine_modeEEERKT_ in [56] .text.hot._ZN16wide_int_storageC2ISt4pairIP7rtx_def12machine_modeEEERKT_ PROGBITS 018680 9c 00 AXG 0 0 16 section. This constructor is defined in 3 object files, but apparently incorrectly so in dwarf2out.o: for i in *.o; do readelf -Ws $i | grep _ZN16wide_int_storageC[125]ISt4pairIP7rtx_def12machine_modeEEERKT_ echo $i; done 191: 0 NOTYPE LOCAL DEFAULT3 _ZN16wide_int_storageC5ISt4pairIP7rtx_def12machine_modeEEERKT_ 329: 156 FUNCWEAK DEFAULT 25 _ZN16wide_int_storageC2ISt4pairIP7rtx_def12machine_modeEEERKT_ 403: 156 FUNCWEAK DEFAULT 25 _ZN16wide_int_storageC1ISt4pairIP7rtx_def12machine_modeEEERKT_ combine.o 780: 0 NOTYPE LOCAL DEFAULT 28 _ZN16wide_int_storageC5ISt4pairIP7rtx_def12machine_modeEEERKT_ 1036: 156 FUNCWEAK DEFAULT 138 _ZN16wide_int_storageC2ISt4pairIP7rtx_def12machine_modeEEERKT_ dwarf2out.o 112: 0 NOTYPE LOCAL DEFAULT6 _ZN16wide_int_storageC5ISt4pairIP7rtx_def12machine_modeEEERKT_ 231: 156 FUNCWEAK DEFAULT 56 _ZN16wide_int_storageC2ISt4pairIP7rtx_def12machine_modeEEERKT_ 281: 156 FUNCWEAK DEFAULT 56 _ZN16wide_int_storageC1ISt4pairIP7rtx_def12machine_modeEEERKT_ simplify-rtx.o The C5 comdat group for some reason is missing the C1 alias, but that is mandatory in the C5 group.