https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84340
--- Comment #8 from Martin Liška <marxin at gcc dot gnu.org> --- (In reply to Richard Biener from comment #6) > (In reply to Richard Biener from comment #5) > > Doens't have anything todo with EAF_DIRECT (which is correct) but POISON has > > to be marked with reading from the argument as otherwise stores are not kept > > live. > > Ah, no, in this case it is the EAF_DIRECT. But I'm not sure how ASAN works > here.... ASAN_CHECK(In reply to Richard Biener from comment #6) > (In reply to Richard Biener from comment #5) > > Doens't have anything todo with EAF_DIRECT (which is correct) but POISON has > > to be marked with reading from the argument as otherwise stores are not kept > > live. > > Ah, no, in this case it is the EAF_DIRECT. But I'm not sure how ASAN works > here.... E.g. ASAN_MARK (UNPOISON, &ptr, 8); is later expanded to: _1 = &ptr; _13 = (unsigned long) _1; _14 = _13 >> 3; _15 = _14 + 2147450880; _16 = (signed char *) _15; *_16 = 0; Thus EAF_DIRECT shoud NOT be set. Or do I miss something?