[Bug target/49881] [AVR] Inefficient stack manipulation around calls

rth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Jul 28 15:44:00 GMT 2011


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

Richard Henderson <rth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
  Attachment #24848|0                           |1
        is obsolete|                            |

--- Comment #4 from Richard Henderson <rth at gcc dot gnu.org> 2011-07-28 15:43:49 UTC ---
Created attachment 24857
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=24857
patch to generate pushes

Really just a simple matter of defining the right stuff.
On the aforementioned test case we now get

        lds r24,a1+1
        push r24
        lds r24,a1
        push r24
        ldd r24,Y+1
        push r24
        ld r24,Y
        push r24
        push r15
        push r14
        rcall printf

and

   text       data        bss        dec        hex    filename
   1487         32          0       1519        5ef    z.o

which is even better than the hacky A_O_A patch, and
nearly 1K smaller than the unpatched output.

Would one of you be so kind as to do a full test run?
I don't have avr-libc et al set up on this machine...



More information about the Gcc-bugs mailing list