https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120201

H.J. Lu <hjl.tools at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
          Component|target                      |sanitizer
                 CC|                            |dodji at gcc dot gnu.org,
                   |                            |dvyukov at gcc dot gnu.org,
                   |                            |jakub at gcc dot gnu.org,
                   |                            |kcc at gcc dot gnu.org

--- Comment #4 from H.J. Lu <hjl.tools at gmail dot com> ---
On master branch, the stack is properly aligned:

main:
.LASANPC2:
.LFB2:
        .cfi_startproc
        pushq   %rbp
        .cfi_def_cfa_offset 16
        .cfi_offset 6, -16
        movq    %rsp, %rbp
        .cfi_def_cfa_register 6
        pushq   %r15
        pushq   %r14
        pushq   %r13
        pushq   %r12
        pushq   %rbx
        andq    $-64, %rsp  <<<<<<<< Stack realignment
        subq    $576, %rsp
        .cfi_offset 15, -24
        .cfi_offset 14, -32
        .cfi_offset 13, -40
        .cfi_offset 12, -48
        .cfi_offset 3, -56
        movl    __asan_option_detect_stack_use_after_return(%rip), %eax
        leaq    96(%rsp), %r12
...
        movl    $480, %edi 
        call    __asan_stack_malloc_3   <<< sanitizer allocates aligned stack

gdb) next
33              jne     .L115
(gdb) 
899             movl    $480, %edi
(gdb) 
900             call    __asan_stack_malloc_3
(gdb) 
901             testq   %rax, %rax
(gdb) next
902             cmovne  %rax, %r12
(gdb) 
903             jmp     .L1
(gdb) p/x $r12
$8 = 0x7bfff5200000
(gdb) 

        testq   %rax, %rax 
        cmovne  %rax, %r12 
        jmp     .L1  
...
        vmovdqa64       32(%r12), %zmm0
                            ^^^ R12 + 32 isn't 64 byte aligned.

Reply via email to