https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119583
Bug ID: 119583
Summary: -fomit-frame-pointer does not work as expected for
-mavx
Product: gcc
Version: 13.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: rtl-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: siddhesh at gcc dot gnu.org
Target Milestone: ---
Reproducer:
struct S
{
char c[32];
};
extern int ext_f (void *);
void f (void)
{
struct S pe = {};
ext_f(&pe);
asm volatile ("xor %%rbp, %%rbp" ::: "rbp");
}
$ gcc/cc1 -quiet -fomit-frame-pointer -mavx -mpreferred-stack-boundary=5
/tmp/repro.c -o -
.file "repro.c"
.text
.globl f
.type f, @function
f:
.LFB0:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
subq $48, %rsp
.cfi_def_cfa_offset 64
vpxor %xmm0, %xmm0, %xmm0
vmovdqu %ymm0, (%rsp)
movq %rsp, %rax
movq %rax, %rdi
call ext_f
#APP
# 12 "/tmp/repro.c" 1
xor %rbp, %rbp
# 0 "" 2
#NO_APP
nop
addq $48, %rsp
.cfi_def_cfa_offset 16
popq %rbp
.cfi_def_cfa_offset 8
ret
.cfi_endproc
.LFE0:
.size f, .-f
.ident "GCC: (GNU) 15.0.1 20250327 (experimental)"
.section .note.GNU-stack,"",@progbits
The spill:
vmovdqu %ymm0, (%rsp)
needs a stack alignment adjustment from the default 128 bit to 256 bit, which
-fomit-frame-pointer appears to trip on. Does it make sense to set the
preferred alignment to 256 bits for avx?