https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109093
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 Last reconfirmed| |2023-03-13 Status|UNCONFIRMED |NEW --- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> --- #c3 looks very similarly, though have just looked at assembly: pushq %rbp .LCFI0: movl $36, %r11d movl $7, %eax vpxor %xmm0, %xmm0, %xmm0 movq %rsp, %rbp .LCFI1: pushq %r15 pushq %r14 pushq %r13 pushq %r12 .LCFI2: movl $127, %r13d pushq %rbx .LCFI3: leaq -48(%rsp), %rsi ... .L5: vmovdqa %xmm0, (%rsi) so again, %rbp after movq %rsp, %rbp is correctly 16-byte aligned, then 5 registers are pushed, so (%rsp & 15) == 8, %rsi is set to %rsp - 48 and an aligned store to that spot segfaults because (%rsi & 15) == 8. And similarly #c4: pushq %rbp .LCFI0: movabsq $434041037028460038, %rax movq %rsp, %rbp .LCFI1: pushq %rbx .LCFI2: movq %rax, -41(%rsp) movb $6, -33(%rsp) cmpl $-6, (%rdi) jne .L84 movl $2, %r8d leaq -32(%rsp), %rcx ... vmovdqa %xmm1, (%rcx) vmovdqa %xmm0, 16(%rcx) H.J., could you please have a look? Thanks.