https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115220
--- Comment #7 from Richard Biener <rguenth at gcc dot gnu.org> --- OK, so we have a case where we sink a store ignoring a killing use of the VDEF that post-dominates the store. The issue with that is the virtual operand update assumes such stores are on separate paths and that ultimatively the discovered PHI merges the defs of all those "uses". Both constraints are violated - the PHI node is actually dominating the original stmt as it's the loop header PHI which isn't on the path from the "use" (the killing def after the loop).