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

H.J. Lu <hjl.tools at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|---                         |FIXED
   Target Milestone|---                         |8.0

--- Comment #4 from H.J. Lu <hjl.tools at gmail dot com> ---
(In reply to Peter Cordes from comment #0)
> 
> Even (%rsp) is avoided for some reason, even though -mx32 still uses
> push/pop/call/ret which use the full %rsp, so it has to be valid.
> 
> int stackuse(void) {
>         volatile int foo = 2;
>         return foo * 3;
> }
>         movl    $2, -4(%esp)            # 0x67 prefix
>         movl    -4(%esp), %eax          # 0x67 prefix
>         leal    (%rax,%rax,2), %eax     # no prefixes
>         ret
> 

GCC 8 generates:

        movl    $2, -4(%rsp)
        movl    -4(%rsp), %eax
        leal    (%rax,%rax,2), %eax
        ret

Reply via email to