HomePhabricator

[CodeMoverUtils] Improve IsControlFlowEquivalent.

Authored by Whitney on Jan 27 2020, 7:50 PM.

Description

[CodeMoverUtils] Improve IsControlFlowEquivalent.

Summary:
Currently IsControlFlowEquivalent determine if two blocks are control
flow equivalent by checking if A dominates B and B post dominates A.
There exists blocks that are control flow equivalent even if they don't
satisfy the A dominates B and B post dominates A condition.
For example,

if (cond)

A

if (cond)

B

In the PR, we determine if two blocks are control flow equivalent by
also checking if the two sets of conditions A and B depends on are
equivalent.
Reviewer: jdoerfert, Meinersbur, dmgreen, etiotto, bmahjour, fhahn,
hfinkel, kbarton
Reviewed By: fhahn
Subscribers: hiraditya, llvm-commits
Tag: LLVM
Differential Revision: https://reviews.llvm.org/D71578

Details

Committed
WhitneyJan 28 2020, 6:18 AM
Reviewer
fhahn
Differential Revision
D71578: [CodeMoverUtils] Improve IsControlFlowEquivalent.
Parents
rGbb73210ba9f1: [lldb/PDB] Use the new line table constructor
Branches
Unknown
Tags
Unknown