https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117098
H.J. Lu <hjl.tools at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 CC| |liuhongt at gcc dot gnu.org Status|UNCONFIRMED |NEW Last reconfirmed| |2024-10-12 Summary|Tail call doesn't work for |Tail call doesn't work in |x32 |some cases --- Comment #1 from H.J. Lu <hjl.tools at gmail dot com> --- It also happens with x86-64: [hjl@gnu-tgl-3 pr17098]$ cat x.c struct A { int a[13]; }; int baz (int a, int b, int c, void *p, struct A s); int foo (int a, int b, int c, void *p, struct A s) { return baz (a, b, c, p, s); } [hjl@gnu-tgl-3 pr17098]$ make CC=gcc gcc -O2 -S x.c [hjl@gnu-tgl-3 pr17098]$ cat x.s .file "x.c" .text .p2align 4 .globl foo .type foo, @function foo: .LFB0: .cfi_startproc subq $72, %rsp .cfi_def_cfa_offset 80 movdqu 80(%rsp), %xmm0 movl 128(%rsp), %eax movups %xmm0, (%rsp) movdqu 96(%rsp), %xmm0 movl %eax, 48(%rsp) movups %xmm0, 16(%rsp) movdqu 112(%rsp), %xmm0 movups %xmm0, 32(%rsp) call baz addq $72, %rsp .cfi_def_cfa_offset 8 ret .cfi_endproc .LFE0: .size foo, .-foo .ident "GCC: (GNU) 14.2.1 20240912 (Red Hat 14.2.1-3)" .section .note.GNU-stack,"",@progbits [hjl@gnu-tgl-3 pr17098]$