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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Last reconfirmed|2006-10-22 21:08:49         |2021-7-19

--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
-m32:
        pushl   %esi
        pushl   %ebx
        subl    $16, %esp
        movl    28(%esp), %ebx
        movl    32(%esp), %esi
        leal    (%ebx,%ebx), %eax
        pushl   %eax
        call    bar
        movl    %esi, 36(%esp)
        movl    %ebx, 32(%esp)
        addl    $20, %esp
        popl    %ebx
        popl    %esi
        jmp     quux

-m32 -march=i686:
        subl    $28, %esp
        movl    %ebx, 20(%esp)
        movl    32(%esp), %ebx
        movl    %esi, 24(%esp)
        movl    36(%esp), %esi
        leal    (%ebx,%ebx), %eax
        movl    %eax, (%esp)
        call    bar
        movl    %esi, 36(%esp)
        movl    24(%esp), %esi
        movl    %ebx, 32(%esp)
        movl    20(%esp), %ebx
        addl    $28, %esp
        jmp     quux

So in the non-i686 case, it is doing push/pop's do the same as the mov's.

Reply via email to