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.