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.

Reply via email to