[Bug target/87370] [7/8/9 Regression] Inefficient return code of struct values
hjl.tools at gmail dot com
gcc-bugzilla@gcc.gnu.org
Sun Dec 9 16:20:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87370
--- Comment #11 from H.J. Lu <hjl.tools at gmail dot com> ---
(In reply to trashyankes from comment #10)
> (In reply to H.J. Lu from comment #9)
> > Fixed for GCC 9, GCC 8.3 and GCC 7.4.
>
> One question, I look on test case and see:
>
> ```
> f1():
> xor eax, eax
> xor edx, edx
> ret
> f2():
> push rbp
> xor eax, eax
> xor edx, edx
> mov rbp, rsp
> and rsp, -64
> sub rsp, 8
> leave
> ret
> f3():
> xor eax, eax
> xor edx, edx
> ret
> ```
>
> Why `f2` have `push` there? Isn't this co kind of stack alignment? but for
> what point is it there? Clang do not have that.
Which GCC are you using? GCC 8.2 generates:
.file "pr87370.c"
.text
.p2align 4,,15
.globl f1
.type f1, @function
f1:
.LFB0:
.cfi_startproc
xorl %eax, %eax
xorl %edx, %edx
ret
.cfi_endproc
.LFE0:
.size f1, .-f1
.p2align 4,,15
.globl f2
.type f2, @function
f2:
.LFB1:
.cfi_startproc
xorl %eax, %eax
xorl %edx, %edx
ret
.cfi_endproc
.LFE1:
.size f2, .-f2
.p2align 4,,15
.globl f3
.type f3, @function
f3:
.LFB2:
.cfi_startproc
xorl %eax, %eax
xorl %edx, %edx
ret
.cfi_endproc
.LFE2:
.size f3, .-f3
More information about the Gcc-bugs
mailing list