[Bug target/82267] x32: unnecessary address-size prefixes. Why isn't -maddress-mode=long the default?
hjl.tools at gmail dot com
gcc-bugzilla@gcc.gnu.org
Sun Sep 24 21:41:00 GMT 2017
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
More information about the Gcc-bugs
mailing list