[all-commits] [llvm/llvm-project] 78dc64: [CodeMoverUtils] Improve IsControlFlowEquivalent.

whitneywhtsang via All-commits all-commits at lists.llvm.org
Tue Jan 28 06:18:17 PST 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 78dc64989c2f5c075ca74af9dac0c1cb4a2b1f4b
      https://github.com/llvm/llvm-project/commit/78dc64989c2f5c075ca74af9dac0c1cb4a2b1f4b
  Author: Whitney Tsang <whitneyt at ca.ibm.com>
  Date:   2020-01-28 (Tue, 28 Jan 2020)

  Changed paths:
    M llvm/include/llvm/Transforms/Utils/CodeMoverUtils.h
    M llvm/lib/Transforms/Scalar/LoopFuse.cpp
    M llvm/lib/Transforms/Utils/CodeMoverUtils.cpp
    M llvm/unittests/Transforms/Utils/CodeMoverUtilsTest.cpp

  Log Message:
  -----------
  [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




More information about the All-commits mailing list