1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 02:52:53 +02:00
llvm-mirror/test/Transforms/JumpThreading
Brian M. Rzycki 518d937ae6 [JumpThreading] Track unreachable BBs to avoid processing
JumpThreading iterates over F until the IR quiesces. Transforming
unreachable BBs increases compile time and it is also possible to
never stabilize causing JumpThreading to hang. An older attempt at
fixing this problem was D3991 where removeUnreachableBlocks(F)
was called before JumpThreading began. This has a few drawbacks:
 * expensive - the routine attempts to fix up the IR to identify
   additional BBs that can be removed along with unreachable BBs.
 * aggressive - does not identify and preserve the shape of the IR.
   At a minimum it does not preserve loop hierarchies.
 * invasive - altering reachable blocks it may disrupt IR shapes
   that could have otherwise been JumpThreaded.

This patch avoids removeUnreachableBlocks(F) and instead tracks
unreachable BBs in a SmallPtrSet using DominatorTree to validate the
initial state of all BBs. We then rely on subsequent passes to identify
and remove these unreachable blocks from F.

Reviewers: dberlin, sebpop, kuhar, dinesh.d

Reviewed by: sebpop, kuhar

Subscribers: hiraditya, uabelho, llvm-commits

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

llvm-svn: 327713
2018-03-16 15:13:47 +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
basic.ll [JumpThreading] Don't restrict cast-traversal to i1 2018-03-09 16:43:46 +00:00
branch-no-const.ll
compare.ll
conservative-lvi.ll
crash.ll
ddt-crash2.ll [JumpThreading] Preservation of DT and LVI across the pass 2018-01-12 21:06:48 +00:00
ddt-crash3.ll [Dominators] Visit affected node candidates found at different root levels 2018-01-19 21:27:24 +00:00
ddt-crash4.ll [Dominators] Visit affected node candidates found at different root levels 2018-01-19 21:27:24 +00:00
ddt-crash.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
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 [JumpThreading] Track unreachable BBs to avoid processing 2018-03-16 15:13:47 +00:00
pr22086.ll
pr26096.ll
pr27840.ll
pr33605.ll
pr33917.ll
pr36133.ll [JumpThreading] PR36133 enable/disable DominatorTree for LVI analysis 2018-02-16 16:35:17 +00:00
PR33357-lvi-recursion.ll [LazyValueInfo] PR33357 prevent infinite recursion on BinaryOperator 2018-03-13 18:14:10 +00:00
range-compare.ll
select.ll [JumpThreading] Track unreachable BBs to avoid processing 2018-03-16 15:13: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