http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57341
--- Comment #5 from Michael Matz <matz at gcc dot gnu.org> --- (In reply to Jakub Jelinek from comment #4) > (In reply to Richard Biener from comment #3) > > It seems the code really wants to use anti_dependence, not true_dependence. > > We have > > > > <read> ... = equiv_mem; > > <write> dest = ...; > > <use> > > Right. But if equiv_mem overlaps dest and both have non-conflicting alias > sets, > then the program is invalid Nope. Our memory model allows this, the write will dynamically change the type of the written memory cell. > and thus it would be fine to not set > equiv_mem_modified. > > What is the reason why we don't do TBAA checking in anti_dependence etc.? Because we want to allow type changes in the above way. In any case using true_dependence in validate_equiv_mem_from_store definitely is a bug, and anti_dependence is correct.