[PATCH] D40146: [JumpThreading] (WIP) Deferred preservation of DT and LVI across the pass.

Brian Rzycki via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Nov 16 12:38:21 PST 2017


brzycki created this revision.
Herald added a subscriber: hiraditya.

(This revision is a work-in-progress and is being archived for the community.)

The immediate calculation of the DT as accomplished in https://reviews.llvm.org/D38558 has been determined to be too costly of a performance hit. The attempt to mitigate this with deferred updates is frozen.

The problem is due to the asymmetry between the multigraph CFG shape and the tree shape of the DT. In cases when a TerminatorInstruction has multiple unique successors to the same BB it is not computationally trivial to decide when an update event from the CFG translates into an update event in the DT.

The included test-case ddt-crash.ll hilights this problem and must be solved before this code can be merged into tip.


Repository:
  rL LLVM

https://reviews.llvm.org/D40146

Files:
  llvm/include/llvm/IR/DeferredDominance.h
  llvm/include/llvm/Support/GenericDomTreeConstruction.h
  llvm/include/llvm/Transforms/Scalar/JumpThreading.h
  llvm/include/llvm/Transforms/Utils/BasicBlockUtils.h
  llvm/include/llvm/Transforms/Utils/Local.h
  llvm/lib/IR/Dominators.cpp
  llvm/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp
  llvm/lib/Transforms/Scalar/JumpThreading.cpp
  llvm/lib/Transforms/Utils/BasicBlockUtils.cpp
  llvm/lib/Transforms/Utils/Local.cpp
  llvm/test/Analysis/LazyValueAnalysis/lvi-after-jumpthreading.ll
  llvm/test/Transforms/JumpThreading/ddt-crash.ll
  llvm/test/Transforms/JumpThreading/lvi-tristate.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D40146.123233.patch
Type: text/x-patch
Size: 51061 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20171116/9cff98dd/attachment.bin>


More information about the llvm-commits mailing list