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

--- Comment #2 from Drea Pinski <pinskia at gcc dot gnu.org> ---
Shouldn't:

  return (operand_equal_p (load_ref->mem.base, store_ref->mem.base, 0)
          && known_eq (load_ref->mem.size, store_ref->mem.size)
          && known_eq (load_ref->mem.offset, store_ref->mem.offset));

Be a range check to check for partial overlapping first and then an exact
match?

That is:

if ([offset1, offset1+size1] overlaps [offset2, offset2+size2])

then it is not safe to hoist

Reply via email to