Stack space creation instructions in prologue and epilogue don't get deleted. 

foo:
        sub     sp, sp, #8 --> Unnecessary 
        mov     r3, #0
        add     sp, sp, #8 --> Unnecessary
        str     r3, [r0]


struct Foo {
  int *p;
  int *q;
};

void __attribute__((noinline))
     foo(struct Foo f)
{
  *f.p = 0;
}


This appears to be due to get_frame_size returning the size of the incoming
parameters being 8 bytes in the backend .


-- 
           Summary: Additional instructions in prologue and epilogue.
           Product: gcc
           Version: 4.3.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: rtl-optimization
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: ramana at icerasemi dot com
  GCC host triplet: i686-linux
GCC target triplet: arm-none-eabi


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

Reply via email to