[Bug bootstrap/64612] [5 Regression] profiledbootstrap failures

2015-01-27 Thread ro at CeBiTec dot Uni-Bielefeld.DE
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

2015-01-27 Thread jakub at gcc dot gnu.org
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

2015-01-27 Thread jakub at gcc dot gnu.org
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

2015-01-26 Thread jakub at gcc dot gnu.org
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

2015-01-22 Thread ro at CeBiTec dot Uni-Bielefeld.DE
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

2015-01-22 Thread jakub at gcc dot gnu.org
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

2015-01-21 Thread jakub at gcc dot gnu.org
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

2015-01-21 Thread ro at gcc dot gnu.org
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

2015-01-21 Thread ro at CeBiTec dot Uni-Bielefeld.DE
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

2015-01-21 Thread jakub at gcc dot gnu.org
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

2015-01-21 Thread ro at gcc dot gnu.org
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

2015-01-16 Thread trippels at gcc dot gnu.org
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

2015-01-16 Thread trippels at gcc dot gnu.org
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

2015-01-15 Thread jakub at gcc dot gnu.org
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

2015-01-15 Thread hubicka at gcc dot gnu.org
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

2015-01-15 Thread hubicka at gcc dot gnu.org
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

2015-01-15 Thread hubicka at gcc dot gnu.org
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

2015-01-15 Thread hubicka at gcc dot gnu.org
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

2015-01-15 Thread hubicka at gcc dot gnu.org
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

2015-01-15 Thread hubicka at gcc dot gnu.org
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

2015-01-15 Thread jakub at gcc dot gnu.org
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

2015-01-15 Thread jakub at gcc dot gnu.org
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.