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

--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> ---
So this is another case where the conditional propagation happens so that

 if (a == b)
   {
      ... = deref a;
      ... = deref b;
   }

turns into

 if (a == b)
   {
      ... = deref b;
      ... = deref a;
   }

which is of course not sensible.  Having both a = b and b = a recorded
as copies breaks the lattices canonical value.

The original bug would need to have been fixed by recording equivalency
sets or by doing more expensive lookups and knowing a backmapping,
SSA value -> SSA name list.

Reply via email to