JIT: break loop canonicalization into two stages (#70809)
For a given loop, we need to separate out the true backedge, any non-loop backedges, and any inner loop backedges so that they all target distinct blocks. Otherwise, we may violate assumptions that the loop entry dominates all blocks in the loop and that all backedges that reach top come from within the loop. This seems simplest to do with two rounds of canonicalization, one that moves the non-loop edges, and another that moves the true backedge. Fixes #70802.
Showing
想要评论请 注册 或 登录