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?

Reply via email to