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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2016-04-29
     Ever confirmed|0                           |1

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
Assembler w/o asan:

somefunc:
.LFB0:
        .cfi_startproc
        subq    $24, %rsp
        .cfi_def_cfa_offset 32
        movq    $0, 8(%rsp)
        leaq    8(%rsp), %rdi
        call    call
        movabsq $280379743272960, %rdx
        movq    8(%rsp), %rax
        testq   %rdx, 40(%rax)
        setne   %al
        movzbl  %al, %eax
        addq    $24, %rsp
        .cfi_def_cfa_offset 8
        ret

if my math is correct this loads 8 bytes from &px->i and accesses two stray
bytes after the object.  That's actually fine as alignment guarantees of
the type ensure this won't cross a page boundary.  If we misalign it by
making it packed the folding doesn't apply.

So while the folding is strange it isn't incorrect but it messes with ASAN.

Reply via email to