HomePhabricator

[CodeMoverUtils] Enhance isSafeToMoveBefore() when control flow equivalence is…

Authored by congzhe on Sep 27 2021, 3:30 PM.

Description

[CodeMoverUtils] Enhance isSafeToMoveBefore() when control flow equivalence is satisfied

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

Reviewed By: Whitney

Differential Revision: https://reviews.llvm.org/D110456