With improved analysis in determining CFG equivalence that does not require strict dominance and post-dominance conditions, we now relax isSafeToMoveBefore() such that an instruction I can be moved before InsertPoint even if they do not strictly dominate each other, as long as they follow the same control flow path.
For example, we can move Instruction 0 before Instruction 1, and vice versa.
if (cond1) // Instruction 0: %add = add i32 1, 2 if (cond1) // Instruction 1: %add2 = add i32 2, 1
How about adding assert(isControlFlowEquivalent(*ThisBlock, *OtherBlock, *DT, *PDT));?