https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103721
--- Comment #8 from Andrew Macleod <amacleod at redhat dot com> --- No probably about it :-) As soon as the path crosses a back edge, we can encounter definitions of SSA_NAMEs that may have had a use in the path already, so this will then be a new definition. The relation code is all designed around seeing things in dominator order, and crossing a back edge in the path violates this assumption. I thunk purging all relations from the current path list is safe/necessary when we traverse a back edge, and then I think you can start registering new ones. Its unclear to me whether its safe to query the root oracle again from the loop top rather than path start at this point. It would depend on whether we can be assured it dominates every other node in the path already.