public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug regression/39839]  New: [4.3/4.4/4.5 regression] loop invariant motion causes stack spill
@ 2009-04-21 18:27 alexvod at google dot com
  2009-04-22  9:40 ` [Bug tree-optimization/39839] " rguenth at gcc dot gnu dot org
                   ` (15 more replies)
  0 siblings, 16 replies; 19+ messages in thread
From: alexvod at google dot com @ 2009-04-21 18:27 UTC (permalink / raw)
  To: gcc-bugs

The following code:
struct S
{
  int count;
  char *addr;
};

void func(const char*, const char*, int, const char*);

void test(struct S *p)
{
  int off = p->count;
  while (p->count >= 0)
    {
      const char *s = "xyz";
      if (*p->addr) s = "pqr";
      func("abcde", p->addr + off, off, s);
      p->count--;
    }
}

is compiled by GCC 4.2.1 to 64 bytes, and by GCC 4.4.0 to 76 bytes. Bisection
shows that size is increased several times:
123918 -> 123919: 64 -> 72
124041 -> 124042: 72 -> 76
I already filed a bug for 123919
(http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39837), so let's take a look at
http://gcc.gnu.org/viewcvs?view=rev&revision=124042

GCC rev124041 (with -march=armv5te -mthumb -mthumb-interwork -fpic -Os)
test:
        push    {r4, r5, r6, r7, lr}
        ldr     r3, .L9
        ldr     r2, .L9+4
.LPIC0:
        add     r3, pc
        add     r7, r3, r2
        ldr     r2, .L9+8
        ldr     r5, [r0]
        sub     sp, sp, #4
        mov     r4, r0
        add     r6, r3, r2
        b       .L2
.L3:
        ldr     r0, [r4, #4]
        ldrb    r3, [r0]
        cmp     r3, #0
        beq     .L4
        mov     r2, r6
        b       .L6
.L4:
        mov     r2, r7
.L6:
        add     r0, r0, r5
        lsl     r1, r5, #1
        bl      func
        ldr     r3, [r4]
        sub     r3, r3, #1
        str     r3, [r4]
.L2:
        ldr     r3, [r4]
        cmp     r3, #0
        bge     .L3
        add     sp, sp, #4
        @ sp needed for prologue
        pop     {r4, r5, r6, r7, pc}
.L10:

GCC rev124042:
test:
        push    {r4, r5, r6, r7, lr}
        ldr     r3, .L9
        ldr     r2, .L9+4
.LPIC0:
        add     r3, pc
        add     r2, r3, r2
        sub     sp, sp, #12
        ldr     r5, [r0]
        str     r2, [sp, #4]
        ldr     r2, .L9+8
        mov     r4, r0
        lsl     r6, r5, #1
        add     r7, r3, r2
        b       .L2
.L3:
        ldr     r0, [r4, #4]
        ldrb    r3, [r0]
        cmp     r3, #0
        beq     .L4
        mov     r2, r7
        b       .L6
.L4:
        ldr     r2, [sp, #4]
.L6:
        add     r0, r0, r5
        mov     r1, r6
        bl      func
        ldr     r3, [r4]
        sub     r3, r3, #1
        str     r3, [r4]
.L2:
        ldr     r3, [r4]
        cmp     r3, #0
        bge     .L3
        add     sp, sp, #12
        @ sp needed for prologue
        pop     {r4, r5, r6, r7, pc}

The first different dump is 090t.lim, which moves (off << 1) out of the loop.
But this extra variable causes extra stack spill, so it actually a loss, not a
win. Any ideas about what to tweak?


-- 
           Summary: [4.3/4.4/4.5 regression] loop invariant motion causes
                    stack spill
           Product: gcc
           Version: 4.4.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: regression
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: alexvod at google dot com
 GCC build triplet: x86_64-unknown-linux-gnu
  GCC host triplet: x86_64-unknown-linux-gnu
GCC target triplet: arm-eabi


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


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

* [Bug tree-optimization/39839] [4.3/4.4/4.5 regression] loop invariant motion causes stack spill
  2009-04-21 18:27 [Bug regression/39839] New: [4.3/4.4/4.5 regression] loop invariant motion causes stack spill alexvod at google dot com
@ 2009-04-22  9:40 ` rguenth at gcc dot gnu dot org
  2009-04-22 13:39 ` rguenth at gcc dot gnu dot org
                   ` (14 subsequent siblings)
  15 siblings, 0 replies; 19+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2009-04-22  9:40 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #1 from rguenth at gcc dot gnu dot org  2009-04-22 09:39 -------
Implement re-materialization in reload.


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
          Component|regression                  |tree-optimization
           Keywords|                            |missed-optimization
   Target Milestone|---                         |4.3.4


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


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

* [Bug tree-optimization/39839] [4.3/4.4/4.5 regression] loop invariant motion causes stack spill
  2009-04-21 18:27 [Bug regression/39839] New: [4.3/4.4/4.5 regression] loop invariant motion causes stack spill alexvod at google dot com
  2009-04-22  9:40 ` [Bug tree-optimization/39839] " rguenth at gcc dot gnu dot org
@ 2009-04-22 13:39 ` rguenth at gcc dot gnu dot org
  2009-04-22 20:37 ` vmakarov at redhat dot com
                   ` (13 subsequent siblings)
  15 siblings, 0 replies; 19+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2009-04-22 13:39 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #2 from rguenth at gcc dot gnu dot org  2009-04-22 13:39 -------
Vlad, with YARA you had implemented rematerialization, right?  How difficult is
it to do the same with IRA for cases like this?


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |vmakarov at redhat dot com
           Priority|P3                          |P2


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


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

* [Bug tree-optimization/39839] [4.3/4.4/4.5 regression] loop invariant motion causes stack spill
  2009-04-21 18:27 [Bug regression/39839] New: [4.3/4.4/4.5 regression] loop invariant motion causes stack spill alexvod at google dot com
  2009-04-22  9:40 ` [Bug tree-optimization/39839] " rguenth at gcc dot gnu dot org
  2009-04-22 13:39 ` rguenth at gcc dot gnu dot org
@ 2009-04-22 20:37 ` vmakarov at redhat dot com
  2009-05-20 14:17 ` ramana at gcc dot gnu dot org
                   ` (12 subsequent siblings)
  15 siblings, 0 replies; 19+ messages in thread
From: vmakarov at redhat dot com @ 2009-04-22 20:37 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #3 from vmakarov at redhat dot com  2009-04-22 20:37 -------
Actually YARA did not have a rematerialization as IRA.  Reload has a primitive
rematerialization of constant values.

Although about 5 years I did implemented a register pressure relief through
rematerialization which is close to Simpson's thesis.  It was reported on the
2nd GCC summit.  I had a mixed feeling about this: wrong register pressure
calculation (because we have not cover classes at that time), small improvement
but a few additional percents to compilation time.

Probably it is time to return to this and make it optional or default which
will eat a chunk of your recent 5% compilation time improvement :)  I'll try to
include this in my plans.


-- 


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


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

* [Bug tree-optimization/39839] [4.3/4.4/4.5 regression] loop invariant motion causes stack spill
  2009-04-21 18:27 [Bug regression/39839] New: [4.3/4.4/4.5 regression] loop invariant motion causes stack spill alexvod at google dot com
                   ` (2 preceding siblings ...)
  2009-04-22 20:37 ` vmakarov at redhat dot com
@ 2009-05-20 14:17 ` ramana at gcc dot gnu dot org
  2009-06-15 16:26 ` bonzini at gnu dot org
                   ` (11 subsequent siblings)
  15 siblings, 0 replies; 19+ messages in thread
From: ramana at gcc dot gnu dot org @ 2009-05-20 14:17 UTC (permalink / raw)
  To: gcc-bugs



-- 

ramana at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2009-05-20 14:17:11
               date|                            |


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


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

* [Bug tree-optimization/39839] [4.3/4.4/4.5 regression] loop invariant motion causes stack spill
  2009-04-21 18:27 [Bug regression/39839] New: [4.3/4.4/4.5 regression] loop invariant motion causes stack spill alexvod at google dot com
                   ` (3 preceding siblings ...)
  2009-05-20 14:17 ` ramana at gcc dot gnu dot org
@ 2009-06-15 16:26 ` bonzini at gnu dot org
  2009-06-22 16:29 ` steven at gcc dot gnu dot org
                   ` (10 subsequent siblings)
  15 siblings, 0 replies; 19+ messages in thread
From: bonzini at gnu dot org @ 2009-06-15 16:26 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #4 from bonzini at gnu dot org  2009-06-15 16:26 -------
Someone can please check if this is still a problem in 4.5?


-- 

bonzini at gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |bonzini at gnu dot org


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


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

* [Bug tree-optimization/39839] [4.3/4.4/4.5 regression] loop invariant motion causes stack spill
  2009-04-21 18:27 [Bug regression/39839] New: [4.3/4.4/4.5 regression] loop invariant motion causes stack spill alexvod at google dot com
                   ` (4 preceding siblings ...)
  2009-06-15 16:26 ` bonzini at gnu dot org
@ 2009-06-22 16:29 ` steven at gcc dot gnu dot org
  2009-08-04 12:49 ` rguenth at gcc dot gnu dot org
                   ` (9 subsequent siblings)
  15 siblings, 0 replies; 19+ messages in thread
From: steven at gcc dot gnu dot org @ 2009-06-22 16:29 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #5 from steven at gcc dot gnu dot org  2009-06-22 16:29 -------
How is this different from bug 39837?


-- 

steven at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
OtherBugsDependingO|                            |16996
              nThis|                            |


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


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

* [Bug tree-optimization/39839] [4.3/4.4/4.5 regression] loop invariant motion causes stack spill
  2009-04-21 18:27 [Bug regression/39839] New: [4.3/4.4/4.5 regression] loop invariant motion causes stack spill alexvod at google dot com
                   ` (5 preceding siblings ...)
  2009-06-22 16:29 ` steven at gcc dot gnu dot org
@ 2009-08-04 12:49 ` rguenth at gcc dot gnu dot org
  2010-01-02  0:50 ` steven at gcc dot gnu dot org
                   ` (8 subsequent siblings)
  15 siblings, 0 replies; 19+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2009-08-04 12:49 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #6 from rguenth at gcc dot gnu dot org  2009-08-04 12:30 -------
GCC 4.3.4 is being released, adjusting target milestone.


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|4.3.4                       |4.3.5


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


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

* [Bug tree-optimization/39839] [4.3/4.4/4.5 regression] loop invariant motion causes stack spill
  2009-04-21 18:27 [Bug regression/39839] New: [4.3/4.4/4.5 regression] loop invariant motion causes stack spill alexvod at google dot com
                   ` (6 preceding siblings ...)
  2009-08-04 12:49 ` rguenth at gcc dot gnu dot org
@ 2010-01-02  0:50 ` steven at gcc dot gnu dot org
  2010-01-02 11:18 ` rguenth at gcc dot gnu dot org
                   ` (7 subsequent siblings)
  15 siblings, 0 replies; 19+ messages in thread
From: steven at gcc dot gnu dot org @ 2010-01-02  0:50 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #7 from steven at gcc dot gnu dot org  2010-01-02 00:49 -------
With "GCC: (GNU) 4.5.0 20090808 (experimental) [trunk revision 150579]" I get:

        .arch armv5te
        .fpu softvfp
        .eabi_attribute 20, 1
        .eabi_attribute 21, 1
        .eabi_attribute 23, 3
        .eabi_attribute 24, 1
        .eabi_attribute 25, 1
        .eabi_attribute 26, 1
        .eabi_attribute 30, 4
        .eabi_attribute 18, 4
        .code   16
        .file   "t.c"
        .text
        .align  1
        .global test
        .code   16
        .thumb_func
        .type   test, %function
test:
        push    {r3, r4, r5, r6, r7, lr}
        ldr     r3, .L7
        ldr     r5, .L7+4
.LPIC0:
        add     r3, pc
        add     r5, r3, r5
        mov     r7, r5
        mov     r4, r0
        ldr     r6, [r0]
        add     r7, r7, #8
        b       .L2
.L4:
        ldr     r1, [r4, #4]
        ldrb    r3, [r1]
        cmp     r3, #0
        bne     .L5
        mov     r3, r5
        b       .L3
.L5:
        add     r3, r5, #4
.L3:
        add     r1, r1, r6
        mov     r0, r7
        mov     r2, r6
        bl      func
        ldr     r3, [r4]
        sub     r3, r3, #1
        str     r3, [r4]
.L2:
        ldr     r3, [r4]
        cmp     r3, #0
        bge     .L4
        @ sp needed for prologue
        pop     {r3, r4, r5, r6, r7, pc}
.L8:
       .align  2
.L7:
        .word   _GLOBAL_OFFSET_TABLE_-(.LPIC0+4)
        .word   .LANCHOR0(GOTOFF)
        .size   test, .-test
        .section        .rodata
        .set    .LANCHOR0,. + 0
.LC0:
        .ascii  "xyz\000"
.LC1:
        .ascii  "pqr\000"
.LC2:
        .ascii  "abcde\000"
        .ident  "GCC: (GNU) 4.5.0 20090808 (experimental) [trunk revision
150579]"


I have no idea whether that is better or worse. Alexander, could you give this
a look please?


-- 


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


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

* [Bug tree-optimization/39839] [4.3/4.4/4.5 regression] loop invariant motion causes stack spill
  2009-04-21 18:27 [Bug regression/39839] New: [4.3/4.4/4.5 regression] loop invariant motion causes stack spill alexvod at google dot com
                   ` (7 preceding siblings ...)
  2010-01-02  0:50 ` steven at gcc dot gnu dot org
@ 2010-01-02 11:18 ` rguenth at gcc dot gnu dot org
  2010-05-22 18:32 ` [Bug tree-optimization/39839] [4.3/4.4/4.5/4.6 " rguenth at gcc dot gnu dot org
                   ` (6 subsequent siblings)
  15 siblings, 0 replies; 19+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2010-01-02 11:18 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #8 from rguenth at gcc dot gnu dot org  2010-01-02 11:18 -------
You may also want to try -fsched-pressure -fschedule-insns which is new
in GCC 4.5 and might decrease register pressure (no idea if it ever moves
things into loops though - the haifa scheduler might not consider it a
region to work on).


-- 


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


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

* [Bug tree-optimization/39839] [4.3/4.4/4.5/4.6 regression] loop invariant motion causes stack spill
  2009-04-21 18:27 [Bug regression/39839] New: [4.3/4.4/4.5 regression] loop invariant motion causes stack spill alexvod at google dot com
                   ` (8 preceding siblings ...)
  2010-01-02 11:18 ` rguenth at gcc dot gnu dot org
@ 2010-05-22 18:32 ` rguenth at gcc dot gnu dot org
  2010-06-22 16:27 ` sandra at codesourcery dot com
                   ` (5 subsequent siblings)
  15 siblings, 0 replies; 19+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2010-05-22 18:32 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #9 from rguenth at gcc dot gnu dot org  2010-05-22 18:13 -------
GCC 4.3.5 is being released, adjusting target milestone.


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|4.3.5                       |4.3.6


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


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

* [Bug tree-optimization/39839] [4.3/4.4/4.5/4.6 regression] loop invariant motion causes stack spill
  2009-04-21 18:27 [Bug regression/39839] New: [4.3/4.4/4.5 regression] loop invariant motion causes stack spill alexvod at google dot com
                   ` (9 preceding siblings ...)
  2010-05-22 18:32 ` [Bug tree-optimization/39839] [4.3/4.4/4.5/4.6 " rguenth at gcc dot gnu dot org
@ 2010-06-22 16:27 ` sandra at codesourcery dot com
  2010-06-22 17:29 ` bonzini at gnu dot org
                   ` (4 subsequent siblings)
  15 siblings, 0 replies; 19+ messages in thread
From: sandra at codesourcery dot com @ 2010-06-22 16:27 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #10 from sandra at codesourcery dot com  2010-06-22 16:26 -------
It looks like this bug has been fixed by my proposed patch for PR42505:

http://gcc.gnu.org/ml/gcc-patches/2010-06/msg01920.html

Applying that patch to r160755 gives:

00000000 <test>:
   0:   b570            push    {r4, r5, r6, lr}
   2:   4d0c            ldr     r5, [pc, #48]   ; (34 <test+0x34>)
   4:   1c04            adds    r4, r0, #0
   6:   6806            ldr     r6, [r0, #0]
   8:   447d            add     r5, pc
   a:   e00f            b.n     2c <test+0x2c>
   c:   6861            ldr     r1, [r4, #4]
   e:   1c2b            adds    r3, r5, #0
  10:   780a            ldrb    r2, [r1, #0]
  12:   2a00            cmp     r2, #0
  14:   d101            bne.n   1a <test+0x1a>
  16:   4b08            ldr     r3, [pc, #32]   ; (38 <test+0x38>)
  18:   447b            add     r3, pc
  1a:   4808            ldr     r0, [pc, #32]   ; (3c <test+0x3c>)
  1c:   1989            adds    r1, r1, r6
  1e:   4478            add     r0, pc
  20:   1c32            adds    r2, r6, #0
  22:   f7ff fffe       bl      0 <func>
  26:   6823            ldr     r3, [r4, #0]
  28:   3b01            subs    r3, #1
  2a:   6023            str     r3, [r4, #0]
  2c:   6823            ldr     r3, [r4, #0]
  2e:   2b00            cmp     r3, #0
  30:   daec            bge.n   c <test+0xc>
  32:   bd70            pop     {r4, r5, r6, pc}
  34:   00000028        .word   0x00000028
  38:   0000001c        .word   0x0000001c
  3c:   0000001a        .word   0x0000001a

So, back down to 64 bytes of code, and no spills to stack.

Assuming the PR42505 patch is approved, probably the only thing required to
close this issue is checking in the additional test case.


-- 

sandra at codesourcery dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |sandra at codesourcery dot
                   |                            |com


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


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

* [Bug tree-optimization/39839] [4.3/4.4/4.5/4.6 regression] loop invariant motion causes stack spill
  2009-04-21 18:27 [Bug regression/39839] New: [4.3/4.4/4.5 regression] loop invariant motion causes stack spill alexvod at google dot com
                   ` (10 preceding siblings ...)
  2010-06-22 16:27 ` sandra at codesourcery dot com
@ 2010-06-22 17:29 ` bonzini at gnu dot org
  2010-06-22 18:02 ` sandra at codesourcery dot com
                   ` (3 subsequent siblings)
  15 siblings, 0 replies; 19+ messages in thread
From: bonzini at gnu dot org @ 2010-06-22 17:29 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #11 from bonzini at gnu dot org  2010-06-22 17:28 -------
That would be WONTFIX for 4.5 and earlier, right?  4.4 and earlier are
definitely out of question, but maybe your patch alone gives the same effect on
4.5 branch too, without any of the other ivopts and ARM improvements that
recently went into 4.6?


-- 

bonzini at gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
  BugsThisDependsOn|                            |42505


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


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

* [Bug tree-optimization/39839] [4.3/4.4/4.5/4.6 regression] loop invariant motion causes stack spill
  2009-04-21 18:27 [Bug regression/39839] New: [4.3/4.4/4.5 regression] loop invariant motion causes stack spill alexvod at google dot com
                   ` (11 preceding siblings ...)
  2010-06-22 17:29 ` bonzini at gnu dot org
@ 2010-06-22 18:02 ` sandra at codesourcery dot com
  2010-07-11  1:22 ` sandra at codesourcery dot com
                   ` (2 subsequent siblings)
  15 siblings, 0 replies; 19+ messages in thread
From: sandra at codesourcery dot com @ 2010-06-22 18:02 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #12 from sandra at codesourcery dot com  2010-06-22 18:02 -------
Hrmmm, I was planning to attempt a 4.5 backport of the PR42505 patch for
internal use, but if it's not easy or doesn't help, I think I have better
things to do with my time than to try to come up with some other fix.  ;-)  So,
let's wait and see.


-- 


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


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

* [Bug tree-optimization/39839] [4.3/4.4/4.5/4.6 regression] loop invariant motion causes stack spill
  2009-04-21 18:27 [Bug regression/39839] New: [4.3/4.4/4.5 regression] loop invariant motion causes stack spill alexvod at google dot com
                   ` (12 preceding siblings ...)
  2010-06-22 18:02 ` sandra at codesourcery dot com
@ 2010-07-11  1:22 ` sandra at codesourcery dot com
  2010-07-13 16:14 ` sandra at codesourcery dot com
  2010-07-23  2:18 ` sandra at gcc dot gnu dot org
  15 siblings, 0 replies; 19+ messages in thread
From: sandra at codesourcery dot com @ 2010-07-11  1:22 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #13 from sandra at codesourcery dot com  2010-07-11 01:22 -------
Some further analysis:

The part of my PR42505 patch that made the difference was the change to
estimate_register_pressure_cost in cfgloopanal.c, to make it exclude the
call-clobbered registers.  This part was finally committed separately in a
revised version as r162043.

I'm still looking into what to do about the test case and 4.5 backport.


-- 


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


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

* [Bug tree-optimization/39839] [4.3/4.4/4.5/4.6 regression] loop invariant motion causes stack spill
  2009-04-21 18:27 [Bug regression/39839] New: [4.3/4.4/4.5 regression] loop invariant motion causes stack spill alexvod at google dot com
                   ` (13 preceding siblings ...)
  2010-07-11  1:22 ` sandra at codesourcery dot com
@ 2010-07-13 16:14 ` sandra at codesourcery dot com
  2010-07-23  2:18 ` sandra at gcc dot gnu dot org
  15 siblings, 0 replies; 19+ messages in thread
From: sandra at codesourcery dot com @ 2010-07-13 16:14 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #14 from sandra at codesourcery dot com  2010-07-13 16:13 -------
There are two patches that made the difference:  r158189 (Carrot's patch for
PR42601) and r162043 (the second part of my patch for PR42505).  I checked that
backporting these two changes to the 4.5 branch is sufficient to fix the code
size regression on this example there, too.

I posted the test case patch here:
http://gcc.gnu.org/ml/gcc-patches/2010-07/msg01070.html


-- 


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


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

* [Bug tree-optimization/39839] [4.3/4.4/4.5/4.6 regression] loop invariant motion causes stack spill
  2009-04-21 18:27 [Bug regression/39839] New: [4.3/4.4/4.5 regression] loop invariant motion causes stack spill alexvod at google dot com
                   ` (14 preceding siblings ...)
  2010-07-13 16:14 ` sandra at codesourcery dot com
@ 2010-07-23  2:18 ` sandra at gcc dot gnu dot org
  15 siblings, 0 replies; 19+ messages in thread
From: sandra at gcc dot gnu dot org @ 2010-07-23  2:18 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #15 from sandra at gcc dot gnu dot org  2010-07-23 02:18 -------
Subject: Bug 39839

Author: sandra
Date: Fri Jul 23 02:18:07 2010
New Revision: 162438

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=162438
Log:
2010-07-22  Sandra Loosemore  <sandra@codesourcery.com>

        PR tree-optimization/39839

        gcc/testsuite/
        * gcc.target/arm/pr39839.c: New test case.

Added:
    trunk/gcc/testsuite/gcc.target/arm/pr39839.c
Modified:
    trunk/gcc/testsuite/ChangeLog


-- 


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


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

* [Bug tree-optimization/39839] [4.3/4.4/4.5/4.6 regression] loop invariant motion causes stack spill
       [not found] <bug-39839-4@http.gcc.gnu.org/bugzilla/>
  2011-06-24 17:12 ` rguenth at gcc dot gnu.org
@ 2011-06-27 14:52 ` rguenth at gcc dot gnu.org
  1 sibling, 0 replies; 19+ messages in thread
From: rguenth at gcc dot gnu.org @ 2011-06-27 14:52 UTC (permalink / raw)
  To: gcc-bugs

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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|4.3.6                       |4.4.7

--- Comment #18 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-06-27 12:14:33 UTC ---
4.3 branch is being closed, moving to 4.4.7 target.


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

* [Bug tree-optimization/39839] [4.3/4.4/4.5/4.6 regression] loop invariant motion causes stack spill
       [not found] <bug-39839-4@http.gcc.gnu.org/bugzilla/>
@ 2011-06-24 17:12 ` rguenth at gcc dot gnu.org
  2011-06-27 14:52 ` rguenth at gcc dot gnu.org
  1 sibling, 0 replies; 19+ messages in thread
From: rguenth at gcc dot gnu.org @ 2011-06-24 17:12 UTC (permalink / raw)
  To: gcc-bugs

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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
      Known to work|                            |4.7.0
            Summary|[4.3/4.4/4.5/4.6/4.7        |[4.3/4.4/4.5/4.6
                   |regression] loop invariant  |regression] loop invariant
                   |motion causes stack spill   |motion causes stack spill

--- Comment #17 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-06-24 17:11:01 UTC ---
At least for 4.7 it seems.


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

end of thread, other threads:[~2011-06-27 14:52 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-04-21 18:27 [Bug regression/39839] New: [4.3/4.4/4.5 regression] loop invariant motion causes stack spill alexvod at google dot com
2009-04-22  9:40 ` [Bug tree-optimization/39839] " rguenth at gcc dot gnu dot org
2009-04-22 13:39 ` rguenth at gcc dot gnu dot org
2009-04-22 20:37 ` vmakarov at redhat dot com
2009-05-20 14:17 ` ramana at gcc dot gnu dot org
2009-06-15 16:26 ` bonzini at gnu dot org
2009-06-22 16:29 ` steven at gcc dot gnu dot org
2009-08-04 12:49 ` rguenth at gcc dot gnu dot org
2010-01-02  0:50 ` steven at gcc dot gnu dot org
2010-01-02 11:18 ` rguenth at gcc dot gnu dot org
2010-05-22 18:32 ` [Bug tree-optimization/39839] [4.3/4.4/4.5/4.6 " rguenth at gcc dot gnu dot org
2010-06-22 16:27 ` sandra at codesourcery dot com
2010-06-22 17:29 ` bonzini at gnu dot org
2010-06-22 18:02 ` sandra at codesourcery dot com
2010-07-11  1:22 ` sandra at codesourcery dot com
2010-07-13 16:14 ` sandra at codesourcery dot com
2010-07-23  2:18 ` sandra at gcc dot gnu dot org
     [not found] <bug-39839-4@http.gcc.gnu.org/bugzilla/>
2011-06-24 17:12 ` rguenth at gcc dot gnu.org
2011-06-27 14:52 ` 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).