llvm-project/llvm/test/Transforms/JumpThreading
Brian M. Rzycki 9b7ae23256 [JumpThreading] Preservation of DT and LVI across the pass
Summary:
See D37528 for a previous (non-deferred) version of this
patch and its description.

Preserves dominance in a deferred manner using a new class
DeferredDominance. This reduces the performance impact of
updating the DominatorTree at every edge insertion and
deletion. A user may call DDT->flush() within JumpThreading
for an up-to-date DT. This patch currently has one flush()
at the end of runImpl() to ensure DT is preserved across
the pass.

LVI is also preserved to help subsequent passes such as
CorrelatedValuePropagation. LVI is simpler to maintain and
is done immediately (not deferred). The code to perform the
preversation was minimally altered and simply marked as
preserved for the PassManager to be informed.

This extends the analysis available to JumpThreading for
future enhancements such as threading across loop headers.

Reviewers: dberlin, kuhar, sebpop

Reviewed By: kuhar, sebpop

Subscribers: mgorny, dmgreen, kuba, rnk, rsmith, hiraditya, llvm-commits

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

llvm-svn: 322401
2018-01-12 21:06:48 +00:00
..
2008-11-27-EntryMunge.ll
2010-08-26-and.ll
2011-04-02-SimplifyDeadBlock.ll
2011-04-14-InfLoop.ll
2012-07-19-NoSuccessorIndirectBr.ll
and-and-cond.ll
and-cond.ll
assume-edge-dom.ll
assume.ll [JumpThreading] Safely replace uses of condition 2017-05-23 13:36:25 +00:00
basic.ll Fix some misc. -enable-var-scope violations 2017-11-13 01:47:52 +00:00
branch-no-const.ll
compare.ll
conservative-lvi.ll
crash.ll
ddt-crash.ll [JumpThreading] Preservation of DT and LVI across the pass 2018-01-12 21:06:48 +00:00
ddt-crash2.ll [JumpThreading] Preservation of DT and LVI across the pass 2018-01-12 21:06:48 +00:00
degenerate-phi.ll
fold-not-thread.ll [JumpThreading] Safely replace uses of condition 2017-05-23 13:36:25 +00:00
guards.ll [JumpThreading] Restrict PRE across instructions that don't pass control to successors 2017-12-19 09:10:21 +00:00
implied-cond.ll
indirectbr.ll
induction.ll
landing-pad.ll
lvi-load.ll
lvi-tristate.ll [JumpThreading] Preservation of DT and LVI across the pass 2018-01-12 21:06:48 +00:00
no-irreducible-loops.ll
or-undef.ll
phi-eq.ll
phi-known.ll
pr9331.ll
pr15851_hang.ll
pr22086.ll
pr26096.ll
pr27840.ll
pr33605.ll [SimplifyCFG] Defer folding unconditional branches to LateSimplifyCFG if it can destroy canonical loop structure. 2017-07-19 08:53:34 +00:00
pr33917.ll [JumpThreading] Stop falsely preserving LazyValueInfo. 2017-07-28 03:10:43 +00:00
range-compare.ll [JumpThreading] Add test case that was supposed to go with r306085. 2017-06-27 15:26:47 +00:00
select.ll [JumpThreading] Add a pattern to TryToUnfoldSelectInCurrBB() 2017-07-14 19:16:47 +00:00
static-profile.ll Disable jump threading into loop headers 2017-09-06 19:36:58 +00:00
thread-cmp.ll
thread-loads.ll
threading_prof1.ll [Profile] backward propagate profile info in JumpThreading 2017-08-24 22:54:01 +00:00
threading_prof2.ll [Profile] backward propagate profile info in JumpThreading 2017-08-24 22:54:01 +00:00
update-edge-weight.ll