public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug rtl-optimization/56339] New: [4.8 Regression]: Suboptimal register allocation
@ 2013-02-15  8:53 ubizjak at gmail dot com
  2013-02-15  9:20 ` [Bug rtl-optimization/56339] " rguenth at gcc dot gnu.org
                   ` (21 more replies)
  0 siblings, 22 replies; 23+ messages in thread
From: ubizjak at gmail dot com @ 2013-02-15  8:53 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56339

             Bug #: 56339
           Summary: [4.8 Regression]: Suboptimal register allocation
    Classification: Unclassified
           Product: gcc
           Version: 4.8.0
            Status: UNCONFIRMED
          Keywords: ra
          Severity: normal
          Priority: P3
         Component: rtl-optimization
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: ubizjak@gmail.com
                CC: vmakarov@gcc.gnu.org


Split out from PR55941.

The testcase from referred PR

--cut here--
typedef struct A { double a, b; } A;
double f(A x,double y){return x.a+y;}
--cut here--

compiles to (-O2):

f:
        addsd   %xmm0, %xmm2
        movapd  %xmm2, %xmm0
        ret

gcc-4.7 generates:

f:
        addsd   %xmm2, %xmm0
        ret

LRA does not take into account commutative operands here.


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug rtl-optimization/56339] [4.8 Regression]: Suboptimal register allocation
  2013-02-15  8:53 [Bug rtl-optimization/56339] New: [4.8 Regression]: Suboptimal register allocation ubizjak at gmail dot com
@ 2013-02-15  9:20 ` rguenth at gcc dot gnu.org
  2013-02-15  9:52 ` steven at gcc dot gnu.org
                   ` (20 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: rguenth at gcc dot gnu.org @ 2013-02-15  9:20 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56339

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |missed-optimization
   Target Milestone|---                         |4.8.0


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug rtl-optimization/56339] [4.8 Regression]: Suboptimal register allocation
  2013-02-15  8:53 [Bug rtl-optimization/56339] New: [4.8 Regression]: Suboptimal register allocation ubizjak at gmail dot com
  2013-02-15  9:20 ` [Bug rtl-optimization/56339] " rguenth at gcc dot gnu.org
@ 2013-02-15  9:52 ` steven at gcc dot gnu.org
  2013-02-15  9:52 ` steven at gcc dot gnu.org
                   ` (19 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: steven at gcc dot gnu.org @ 2013-02-15  9:52 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56339

Steven Bosscher <steven at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |steven at gcc dot gnu.org

--- Comment #1 from Steven Bosscher <steven at gcc dot gnu.org> 2013-02-15 09:51:56 UTC ---
Confirmed.

Actually, it looks to me like IRA already makes this allocation:
Disposition:
    1:r64  l0    21    0:r67  l0    23
(21=>%xmm0, 23=>%xmm2)

=> .ira dump:

;; basic block 2
    2: r64:DF=xmm0:DF
    8: r67:DF=xmm2:DF
   12: r67:DF=r67:DF+r64:DF
   17: xmm0:DF=r67:DF
   20: use xmm0:DF

=> .reload (LRA) dump:

********** Local #1: **********
         Choosing alt 0 in insn 12:  (0) =x  (1) %0  (2) xm

;; basic block 2
    2: xmm0:DF=xmm0:DF
    8: xmm2:DF=xmm2:DF
   12: xmm2:DF=xmm2:DF+xmm0:DF
   17: xmm0:DF=xmm2:DF
   20: use xmm0:DF

So all LRA does, is follow IRA's recommended allocation.  That is IMHO
the right thing to do, too.


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug rtl-optimization/56339] [4.8 Regression]: Suboptimal register allocation
  2013-02-15  8:53 [Bug rtl-optimization/56339] New: [4.8 Regression]: Suboptimal register allocation ubizjak at gmail dot com
  2013-02-15  9:20 ` [Bug rtl-optimization/56339] " rguenth at gcc dot gnu.org
  2013-02-15  9:52 ` steven at gcc dot gnu.org
@ 2013-02-15  9:52 ` steven at gcc dot gnu.org
  2013-02-15 10:00 ` steven at gcc dot gnu.org
                   ` (18 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: steven at gcc dot gnu.org @ 2013-02-15  9:52 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56339

Steven Bosscher <steven at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2013-02-15
     Ever Confirmed|0                           |1


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug rtl-optimization/56339] [4.8 Regression]: Suboptimal register allocation
  2013-02-15  8:53 [Bug rtl-optimization/56339] New: [4.8 Regression]: Suboptimal register allocation ubizjak at gmail dot com
                   ` (2 preceding siblings ...)
  2013-02-15  9:52 ` steven at gcc dot gnu.org
@ 2013-02-15 10:00 ` steven at gcc dot gnu.org
  2013-02-15 10:17 ` steven at gcc dot gnu.org
                   ` (17 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: steven at gcc dot gnu.org @ 2013-02-15 10:00 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56339

--- Comment #2 from Steven Bosscher <steven at gcc dot gnu.org> 2013-02-15 10:00:13 UTC ---
The "unbreakable" insns 12 "xmm2:DF=xmm2:DF+xmm0:DF" is created by regmove.

.ce3 dump:
    2: r64:DF=xmm0:DF
    8: r66:DF=xmm2:DF
   12: r67:DF=r66:DF+r64:DF
   17: xmm0:DF=r67:DF
   20: use xmm0:DF

.regmove dump:
Could fix operand 1 of insn 12 matching operand 0.
    2: r64:DF=xmm0:DF
    8: r67:DF=xmm2:DF
   12: r67:DF=r67:DF+r64:DF
   17: xmm0:DF=r67:DF
   20: use xmm0:DF

With -fno-regmove:
        addsd   %xmm2, %xmm0
        ret


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug rtl-optimization/56339] [4.8 Regression]: Suboptimal register allocation
  2013-02-15  8:53 [Bug rtl-optimization/56339] New: [4.8 Regression]: Suboptimal register allocation ubizjak at gmail dot com
                   ` (3 preceding siblings ...)
  2013-02-15 10:00 ` steven at gcc dot gnu.org
@ 2013-02-15 10:17 ` steven at gcc dot gnu.org
  2013-02-15 10:21 ` steven at gcc dot gnu.org
                   ` (16 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: steven at gcc dot gnu.org @ 2013-02-15 10:17 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56339

--- Comment #3 from Steven Bosscher <steven at gcc dot gnu.org> 2013-02-15 10:17:19 UTC ---
Before regmove, both input operands die in insn 12:
   12: r67:DF=r66:DF+r64:DF
      REG_DEAD r66:DF
      REG_DEAD r64:DF

and because reg classes haven't been set up, r66 and r67 both have
GENERAL_REGS as their preferred register class so regmove doesn't see
that r64 and r67 share the same preferred register %xmm0:

Breakpoint 1, regmove_backward_pass () at ../../trunk/gcc/regmove.c:1088
1088                  if (dump_file)
(gdb) p reg_preferred_class (64) 
$10 = GENERAL_REGS
(gdb) p reg_preferred_class (66)
$11 = GENERAL_REGS
(gdb) p reg_preferred_class (67)
$12 = GENERAL_REGS
(gdb) p ira_set_pseudo_classes (true, dump_file)
$13 = void
(gdb) p reg_preferred_class (64)
$14 = SSE_FIRST_REG
(gdb) p reg_preferred_class (66)
$15 = SSE_REGS
(gdb) p reg_preferred_class (67)
$16 = SSE_FIRST_REG
(gdb)


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug rtl-optimization/56339] [4.8 Regression]: Suboptimal register allocation
  2013-02-15  8:53 [Bug rtl-optimization/56339] New: [4.8 Regression]: Suboptimal register allocation ubizjak at gmail dot com
                   ` (4 preceding siblings ...)
  2013-02-15 10:17 ` steven at gcc dot gnu.org
@ 2013-02-15 10:21 ` steven at gcc dot gnu.org
  2013-02-15 16:48 ` vmakarov at gcc dot gnu.org
                   ` (15 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: steven at gcc dot gnu.org @ 2013-02-15 10:21 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56339

--- Comment #4 from Steven Bosscher <steven at gcc dot gnu.org> 2013-02-15 10:20:52 UTC ---
Perhaps for regmove IRA classes should be set up unconditionally:

Index: regmove.c
===================================================================
--- regmove.c   (revision 196074)
+++ regmove.c   (working copy)
@@ -1234,8 +1234,9 @@ regmove_optimize (void)
   regstat_init_n_sets_and_refs ();
   regstat_compute_ri ();

-  if (flag_ira_loop_pressure)
-    ira_set_pseudo_classes (true, dump_file);
+  /* Set up register classes for pseudos, so that reg_preferred_class
+     returns a more useful result.  */
+  ira_set_pseudo_classes (true, dump_file);

   regno_src_regno = XNEWVEC (int, nregs);
   for (i = nregs; --i >= 0; )
@@ -1256,8 +1257,7 @@ regmove_optimize (void)
     }
   regstat_free_n_sets_and_refs ();
   regstat_free_ri ();
-  if (flag_ira_loop_pressure)
-    free_reg_info ();
+  free_reg_info ();
   return 0;
 }


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug rtl-optimization/56339] [4.8 Regression]: Suboptimal register allocation
  2013-02-15  8:53 [Bug rtl-optimization/56339] New: [4.8 Regression]: Suboptimal register allocation ubizjak at gmail dot com
                   ` (5 preceding siblings ...)
  2013-02-15 10:21 ` steven at gcc dot gnu.org
@ 2013-02-15 16:48 ` vmakarov at gcc dot gnu.org
  2013-03-08 15:40 ` rguenth at gcc dot gnu.org
                   ` (14 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: vmakarov at gcc dot gnu.org @ 2013-02-15 16:48 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56339

--- Comment #5 from Vladimir Makarov <vmakarov at gcc dot gnu.org> 2013-02-15 16:48:19 UTC ---
(In reply to comment #4)
> Perhaps for regmove IRA classes should be set up unconditionally:
> 
> Index: regmove.c
> ===================================================================
> --- regmove.c   (revision 196074)
> +++ regmove.c   (working copy)
> @@ -1234,8 +1234,9 @@ regmove_optimize (void)
>    regstat_init_n_sets_and_refs ();
>    regstat_compute_ri ();
> 
> -  if (flag_ira_loop_pressure)
> -    ira_set_pseudo_classes (true, dump_file);
> +  /* Set up register classes for pseudos, so that reg_preferred_class
> +     returns a more useful result.  */
> +  ira_set_pseudo_classes (true, dump_file);
> 
>    regno_src_regno = XNEWVEC (int, nregs);
>    for (i = nregs; --i >= 0; )
> @@ -1256,8 +1257,7 @@ regmove_optimize (void)
>      }
>    regstat_free_n_sets_and_refs ();
>    regstat_free_ri ();
> -  if (flag_ira_loop_pressure)
> -    free_reg_info ();
> +  free_reg_info ();
>    return 0;
>  }

It can be a solution.  I see only one drawback, it is expensive.  Setting
classes is expensive procedure requiring 2 passes over all insns, their
alternatives,and classes for each pseudo operand.

In general, it still will not work for other cases.  We are lucky that xmm0
forms own class SSE_FIRST_REG.  Regmove for general cases should see hard regs
not classes.

This is not the first PR about regmove.  I'd like to remove big part of regmove
concerning matching operands as IRA/LRA can deal with this.  Unfortunately, not
too well when hard regs exposed in RTL and some work should be done to improve
this code.  I am going to do for gcc4.9.


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug rtl-optimization/56339] [4.8 Regression]: Suboptimal register allocation
  2013-02-15  8:53 [Bug rtl-optimization/56339] New: [4.8 Regression]: Suboptimal register allocation ubizjak at gmail dot com
                   ` (6 preceding siblings ...)
  2013-02-15 16:48 ` vmakarov at gcc dot gnu.org
@ 2013-03-08 15:40 ` rguenth at gcc dot gnu.org
  2013-03-08 15:51 ` ubizjak at gmail dot com
                   ` (13 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: rguenth at gcc dot gnu.org @ 2013-03-08 15:40 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56339

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |WAITING

--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> 2013-03-08 15:39:21 UTC ---
So - what regressed this compared to 4.7?  It wasn't regmove.c changes.


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug rtl-optimization/56339] [4.8 Regression]: Suboptimal register allocation
  2013-02-15  8:53 [Bug rtl-optimization/56339] New: [4.8 Regression]: Suboptimal register allocation ubizjak at gmail dot com
                   ` (7 preceding siblings ...)
  2013-03-08 15:40 ` rguenth at gcc dot gnu.org
@ 2013-03-08 15:51 ` ubizjak at gmail dot com
  2013-03-08 18:49 ` steven at gcc dot gnu.org
                   ` (12 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: ubizjak at gmail dot com @ 2013-03-08 15:51 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56339

Uros Bizjak <ubizjak at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|WAITING                     |NEW

--- Comment #7 from Uros Bizjak <ubizjak at gmail dot com> 2013-03-08 15:51:15 UTC ---
(In reply to comment #6)
> So - what regressed this compared to 4.7?  It wasn't regmove.c changes.

As said in comment 0:

gcc-4.7 generates:

f:
        addsd   %xmm2, %xmm0
        ret

gcc-4.8 generates:

f:
        addsd   %xmm0, %xmm2
        movapd  %xmm2, %xmm0
        ret


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug rtl-optimization/56339] [4.8 Regression]: Suboptimal register allocation
  2013-02-15  8:53 [Bug rtl-optimization/56339] New: [4.8 Regression]: Suboptimal register allocation ubizjak at gmail dot com
                   ` (8 preceding siblings ...)
  2013-03-08 15:51 ` ubizjak at gmail dot com
@ 2013-03-08 18:49 ` steven at gcc dot gnu.org
  2013-03-08 19:47 ` jakub at gcc dot gnu.org
                   ` (11 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: steven at gcc dot gnu.org @ 2013-03-08 18:49 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56339

--- Comment #8 from Steven Bosscher <steven at gcc dot gnu.org> 2013-03-08 18:49:09 UTC ---
(In reply to comment #6)
> So - what regressed this compared to 4.7?  It wasn't regmove.c changes.

Probably LRA, it better respects IRA's choices (which is good).  The fix
should be found in a change to IRA or regmove.


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug rtl-optimization/56339] [4.8 Regression]: Suboptimal register allocation
  2013-02-15  8:53 [Bug rtl-optimization/56339] New: [4.8 Regression]: Suboptimal register allocation ubizjak at gmail dot com
                   ` (9 preceding siblings ...)
  2013-03-08 18:49 ` steven at gcc dot gnu.org
@ 2013-03-08 19:47 ` jakub at gcc dot gnu.org
  2013-03-11 10:46 ` rguenth at gcc dot gnu.org
                   ` (10 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: jakub at gcc dot gnu.org @ 2013-03-08 19:47 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56339

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org

--- Comment #9 from Jakub Jelinek <jakub at gcc dot gnu.org> 2013-03-08 19:46:59 UTC ---
You don't need to guess, http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55941#c1
mentions the commits that regressed it.


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug rtl-optimization/56339] [4.8 Regression]: Suboptimal register allocation
  2013-02-15  8:53 [Bug rtl-optimization/56339] New: [4.8 Regression]: Suboptimal register allocation ubizjak at gmail dot com
                   ` (10 preceding siblings ...)
  2013-03-08 19:47 ` jakub at gcc dot gnu.org
@ 2013-03-11 10:46 ` rguenth at gcc dot gnu.org
  2013-03-11 11:49 ` ubizjak at gmail dot com
                   ` (9 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: rguenth at gcc dot gnu.org @ 2013-03-11 10:46 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56339

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P3                          |P1
                 CC|                            |hjl at gcc dot gnu.org,
                   |                            |uros at gcc dot gnu.org

--- Comment #10 from Richard Biener <rguenth at gcc dot gnu.org> 2013-03-11 10:46:16 UTC ---
Thus CCing the offending people.


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug rtl-optimization/56339] [4.8 Regression]: Suboptimal register allocation
  2013-02-15  8:53 [Bug rtl-optimization/56339] New: [4.8 Regression]: Suboptimal register allocation ubizjak at gmail dot com
                   ` (11 preceding siblings ...)
  2013-03-11 10:46 ` rguenth at gcc dot gnu.org
@ 2013-03-11 11:49 ` ubizjak at gmail dot com
  2013-03-11 11:58 ` jakub at gcc dot gnu.org
                   ` (8 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: ubizjak at gmail dot com @ 2013-03-11 11:49 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56339

Uros Bizjak <ubizjak at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|uros at gcc dot gnu.org     |

--- Comment #11 from Uros Bizjak <ubizjak at gmail dot com> 2013-03-11 11:49:03 UTC ---
(In reply to comment #10)
> Thus CCing the offending people.

One of the offending people is the reporter.


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug rtl-optimization/56339] [4.8 Regression]: Suboptimal register allocation
  2013-02-15  8:53 [Bug rtl-optimization/56339] New: [4.8 Regression]: Suboptimal register allocation ubizjak at gmail dot com
                   ` (12 preceding siblings ...)
  2013-03-11 11:49 ` ubizjak at gmail dot com
@ 2013-03-11 11:58 ` jakub at gcc dot gnu.org
  2013-03-22 14:43 ` [Bug rtl-optimization/56339] [4.8/4.9 " jakub at gcc dot gnu.org
                   ` (7 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: jakub at gcc dot gnu.org @ 2013-03-11 11:58 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56339

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P1                          |P2

--- Comment #12 from Jakub Jelinek <jakub at gcc dot gnu.org> 2013-03-11 11:57:57 UTC ---
I don't think this is P1.
When looking at the dumps, right after expansion the 4.7 expanded code actually
looks much worse compared to the 4.8 expanded one (4.7 goes through memory,
while 4.8 through subregs), in *.ud-dce it is pretty much comparable, though
4.7 has one extra move:
    2 r62:DF=xmm0:DF
      REG_DEAD: xmm0:DF
    6 r64:DF=xmm2:DF
      REG_DEAD: xmm2:DF
   21 r66:DF=r62:DF
      REG_DEAD: r62:DF
    7 NOTE_INSN_FUNCTION_BEG
   10 r65:DF=r64:DF+r66:DF
      REG_DEAD: r66:DF
      REG_DEAD: r64:DF
   15 xmm0:DF=r65:DF
      REG_DEAD: r65:DF
   18 use xmm0:DF
in 4.7 vs.
    2: r64:DF=xmm0:DF
      REG_DEAD xmm0:DF
    8: r66:DF=xmm2:DF
      REG_DEAD xmm2:DF
    9: NOTE_INSN_FUNCTION_BEG
   12: r67:DF=r66:DF+r64:DF
      REG_DEAD r66:DF
      REG_DEAD r64:DF
   17: xmm0:DF=r67:DF
      REG_DEAD r67:DF
   20: use xmm0:DF
in 4.8.  The combiner change is what matters for the later behavior of regmove,
RA and reload/LRA, but unfortunately that is an ICE fix that can't be reverted,
we really must avoid to propagating hard registers too early, otherwise RA
needs to just give up.
So, in 4.7 we end up with r65:DF=xmm2:DF+r62:DF after combine, while 4.8 still
uses pseudos.  Which is the reason why regmove sets that into the optimal for
this testcase r65:DF=xmm2:DF+r65:DF, because it has no other choice (the
operand was already a hard reg), while in 4.8 it has a choice (sees two
different pseudos, and chooses in this case the wrong one).  I'm afraid there
is no easy fix, so IMHO this needs to be postponed for 4.9.


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug rtl-optimization/56339] [4.8/4.9 Regression]: Suboptimal register allocation
  2013-02-15  8:53 [Bug rtl-optimization/56339] New: [4.8 Regression]: Suboptimal register allocation ubizjak at gmail dot com
                   ` (13 preceding siblings ...)
  2013-03-11 11:58 ` jakub at gcc dot gnu.org
@ 2013-03-22 14:43 ` jakub at gcc dot gnu.org
  2013-05-31 10:58 ` jakub at gcc dot gnu.org
                   ` (6 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: jakub at gcc dot gnu.org @ 2013-03-22 14:43 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56339

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|4.8.0                       |4.8.1

--- Comment #13 from Jakub Jelinek <jakub at gcc dot gnu.org> 2013-03-22 14:43:10 UTC ---
GCC 4.8.0 is being released, adjusting target milestone.


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug rtl-optimization/56339] [4.8/4.9 Regression]: Suboptimal register allocation
  2013-02-15  8:53 [Bug rtl-optimization/56339] New: [4.8 Regression]: Suboptimal register allocation ubizjak at gmail dot com
                   ` (14 preceding siblings ...)
  2013-03-22 14:43 ` [Bug rtl-optimization/56339] [4.8/4.9 " jakub at gcc dot gnu.org
@ 2013-05-31 10:58 ` jakub at gcc dot gnu.org
  2013-10-16  9:48 ` jakub at gcc dot gnu.org
                   ` (5 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: jakub at gcc dot gnu.org @ 2013-05-31 10:58 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56339

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|4.8.1                       |4.8.2

--- Comment #14 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
GCC 4.8.1 has been released.


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug rtl-optimization/56339] [4.8/4.9 Regression]: Suboptimal register allocation
  2013-02-15  8:53 [Bug rtl-optimization/56339] New: [4.8 Regression]: Suboptimal register allocation ubizjak at gmail dot com
                   ` (15 preceding siblings ...)
  2013-05-31 10:58 ` jakub at gcc dot gnu.org
@ 2013-10-16  9:48 ` jakub at gcc dot gnu.org
  2013-11-26 20:24 ` vmakarov at gcc dot gnu.org
                   ` (4 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: jakub at gcc dot gnu.org @ 2013-10-16  9:48 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56339

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|4.8.2                       |4.8.3

--- Comment #15 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
GCC 4.8.2 has been released.


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug rtl-optimization/56339] [4.8/4.9 Regression]: Suboptimal register allocation
  2013-02-15  8:53 [Bug rtl-optimization/56339] New: [4.8 Regression]: Suboptimal register allocation ubizjak at gmail dot com
                   ` (16 preceding siblings ...)
  2013-10-16  9:48 ` jakub at gcc dot gnu.org
@ 2013-11-26 20:24 ` vmakarov at gcc dot gnu.org
  2013-12-12 18:09 ` [Bug rtl-optimization/56339] [4.8 " ubizjak at gmail dot com
                   ` (3 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: vmakarov at gcc dot gnu.org @ 2013-11-26 20:24 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56339

--- Comment #16 from Vladimir Makarov <vmakarov at gcc dot gnu.org> ---
The problem was fixed by the patch removing regmove and improving hardware reg
preferences in IRA.


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug rtl-optimization/56339] [4.8 Regression]: Suboptimal register allocation
  2013-02-15  8:53 [Bug rtl-optimization/56339] New: [4.8 Regression]: Suboptimal register allocation ubizjak at gmail dot com
                   ` (17 preceding siblings ...)
  2013-11-26 20:24 ` vmakarov at gcc dot gnu.org
@ 2013-12-12 18:09 ` ubizjak at gmail dot com
  2014-05-22  9:03 ` rguenth at gcc dot gnu.org
                   ` (2 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: ubizjak at gmail dot com @ 2013-12-12 18:09 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56339

Uroš Bizjak <ubizjak at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|[4.8/4.9 Regression]:       |[4.8 Regression]:
                   |Suboptimal register         |Suboptimal register
                   |allocation                  |allocation

--- Comment #17 from Uroš Bizjak <ubizjak at gmail dot com> ---
gcc-4.9 now generates:

f:
        addsd   %xmm2, %xmm0
        ret

The problem is fixed in 4.9, reconfirmed on 4.8 branch.
>From gcc-bugs-return-437430-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Thu Dec 12 18:12:20 2013
Return-Path: <gcc-bugs-return-437430-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 12724 invoked by alias); 12 Dec 2013 18:12:19 -0000
Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Id: <gcc-bugs.gcc.gnu.org>
List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/>
List-Post: <mailto:gcc-bugs@gcc.gnu.org>
List-Help: <mailto:gcc-bugs-help@gcc.gnu.org>
Sender: gcc-bugs-owner@gcc.gnu.org
Delivered-To: mailing list gcc-bugs@gcc.gnu.org
Received: (qmail 12678 invoked by uid 48); 12 Dec 2013 18:12:14 -0000
From: "eggert at gnu dot org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug tree-optimization/52904] -Wstrict-overflow false alarm with bounded loop
Date: Thu, 12 Dec 2013 18:12:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: tree-optimization
X-Bugzilla-Version: 4.7.0
X-Bugzilla-Keywords: diagnostic, missed-optimization
X-Bugzilla-Severity: normal
X-Bugzilla-Who: eggert at gnu dot org
X-Bugzilla-Status: NEW
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org
X-Bugzilla-Target-Milestone: ---
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields:
Message-ID: <bug-52904-4-jFhYOMT75J@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-52904-4@http.gcc.gnu.org/bugzilla/>
References: <bug-52904-4@http.gcc.gnu.org/bugzilla/>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/
Auto-Submitted: auto-generated
MIME-Version: 1.0
X-SW-Source: 2013-12/txt/msg01085.txt.bz2
Content-length: 730

http://gcc.gnu.org/bugzilla/show_bug.cgi?idR904

--- Comment #6 from eggert at gnu dot org ---
> That diagnostic seems right, according to the documentation of -Wstrict-overflow.

The diagnostic is "right" only in the sense that it is correctly reporting
that GCC does not deduce that signed overflow cannot possibly occur in
this function.  It is not "right" in the common sense that a programmer
would ordinarily want, i.e., that the program may have a bug because
signed overflow might lead to undefined behavior.  (Surely the diagnostic
is supposed to be for the benefit of programmers trying to find potential
bugs in their programs, not for the benefit of GCC maintainers trying
to explain how GCC works internally.  :-)


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug rtl-optimization/56339] [4.8 Regression]: Suboptimal register allocation
  2013-02-15  8:53 [Bug rtl-optimization/56339] New: [4.8 Regression]: Suboptimal register allocation ubizjak at gmail dot com
                   ` (18 preceding siblings ...)
  2013-12-12 18:09 ` [Bug rtl-optimization/56339] [4.8 " ubizjak at gmail dot com
@ 2014-05-22  9:03 ` rguenth at gcc dot gnu.org
  2014-12-19 13:36 ` jakub at gcc dot gnu.org
  2015-06-23  8:43 ` rguenth at gcc dot gnu.org
  21 siblings, 0 replies; 23+ messages in thread
From: rguenth at gcc dot gnu.org @ 2014-05-22  9:03 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56339

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|4.8.3                       |4.8.4

--- Comment #18 from Richard Biener <rguenth at gcc dot gnu.org> ---
GCC 4.8.3 is being released, adjusting target milestone.


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug rtl-optimization/56339] [4.8 Regression]: Suboptimal register allocation
  2013-02-15  8:53 [Bug rtl-optimization/56339] New: [4.8 Regression]: Suboptimal register allocation ubizjak at gmail dot com
                   ` (19 preceding siblings ...)
  2014-05-22  9:03 ` rguenth at gcc dot gnu.org
@ 2014-12-19 13:36 ` jakub at gcc dot gnu.org
  2015-06-23  8:43 ` rguenth at gcc dot gnu.org
  21 siblings, 0 replies; 23+ messages in thread
From: jakub at gcc dot gnu.org @ 2014-12-19 13:36 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56339

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|4.8.4                       |4.8.5

--- Comment #19 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
GCC 4.8.4 has been released.


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Bug rtl-optimization/56339] [4.8 Regression]: Suboptimal register allocation
  2013-02-15  8:53 [Bug rtl-optimization/56339] New: [4.8 Regression]: Suboptimal register allocation ubizjak at gmail dot com
                   ` (20 preceding siblings ...)
  2014-12-19 13:36 ` jakub at gcc dot gnu.org
@ 2015-06-23  8:43 ` rguenth at gcc dot gnu.org
  21 siblings, 0 replies; 23+ messages in thread
From: rguenth at gcc dot gnu.org @ 2015-06-23  8:43 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56339

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|---                         |FIXED
   Target Milestone|4.8.5                       |4.9.0
      Known to fail|                            |4.8.5

--- Comment #20 from Richard Biener <rguenth at gcc dot gnu.org> ---
Fixed for 4.9.0.


^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2015-06-23  8:40 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-02-15  8:53 [Bug rtl-optimization/56339] New: [4.8 Regression]: Suboptimal register allocation ubizjak at gmail dot com
2013-02-15  9:20 ` [Bug rtl-optimization/56339] " rguenth at gcc dot gnu.org
2013-02-15  9:52 ` steven at gcc dot gnu.org
2013-02-15  9:52 ` steven at gcc dot gnu.org
2013-02-15 10:00 ` steven at gcc dot gnu.org
2013-02-15 10:17 ` steven at gcc dot gnu.org
2013-02-15 10:21 ` steven at gcc dot gnu.org
2013-02-15 16:48 ` vmakarov at gcc dot gnu.org
2013-03-08 15:40 ` rguenth at gcc dot gnu.org
2013-03-08 15:51 ` ubizjak at gmail dot com
2013-03-08 18:49 ` steven at gcc dot gnu.org
2013-03-08 19:47 ` jakub at gcc dot gnu.org
2013-03-11 10:46 ` rguenth at gcc dot gnu.org
2013-03-11 11:49 ` ubizjak at gmail dot com
2013-03-11 11:58 ` jakub at gcc dot gnu.org
2013-03-22 14:43 ` [Bug rtl-optimization/56339] [4.8/4.9 " jakub at gcc dot gnu.org
2013-05-31 10:58 ` jakub at gcc dot gnu.org
2013-10-16  9:48 ` jakub at gcc dot gnu.org
2013-11-26 20:24 ` vmakarov at gcc dot gnu.org
2013-12-12 18:09 ` [Bug rtl-optimization/56339] [4.8 " ubizjak at gmail dot com
2014-05-22  9:03 ` rguenth at gcc dot gnu.org
2014-12-19 13:36 ` jakub at gcc dot gnu.org
2015-06-23  8:43 ` rguenth at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).