llvm-project/llvm/test/Transforms/JumpThreading
Eli Friedman 15930bf352 [JumpThreading] Fix exponential time algorithm computing known values.
ComputeValueKnownInPredecessors has a "visited" set to prevent infinite
loops, since a value can be visited more than once.  However, the
implementation didn't prevent the algorithm from taking exponential
time. Instead of removing elements from the RecursionSet one at a time,
we should keep around the whole set until
ComputeValueKnownInPredecessors finishes, then discard it.

The testcase is synthetic because I was having trouble effectively
reducing the original.  But it's basically the same idea.

Instead of failing, we could theoretically cache the result instead.
But I don't think it would help substantially in practice.

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

llvm-svn: 346562
2018-11-09 22:35:26 +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
PR33357-lvi-recursion.ll
PR37745.ll [JumpThreading] Don't try to rewrite a use if it's already valid. 2018-06-26 22:19:48 +00:00
and-and-cond.ll
and-cond.ll
assume-edge-dom.ll
assume.ll
basic.ll
bb-unreachable-from-entry.ll [SSAUpdaterBulk] Handle CFG with unreachable from entry blocks. 2018-04-10 02:16:29 +00:00
branch-no-const.ll
combine-metadata.ll [Local] Make DoesKMove required for combineMetadata. 2018-08-24 11:40:04 +00:00
compare.ll
conservative-lvi.ll
crash.ll [JumpThreading] Fix exponential time algorithm computing known values. 2018-11-09 22:35:26 +00:00
ddt-crash.ll
ddt-crash2.ll
ddt-crash3.ll
ddt-crash4.ll
degenerate-phi.ll
fold-not-thread.ll
guards.ll
header-succ.ll [JumpThreading] Don't select an edge that we know we can't thread 2018-03-29 16:01:26 +00:00
implied-cond.ll
indirectbr.ll
induction.ll
landing-pad.ll
lvi-load.ll
lvi-tristate.ll
no-irreducible-loops.ll
or-undef.ll
phi-eq.ll
phi-known.ll Fix the issue that ComputeValueKnownInPredecessors only handles the case when 2018-05-01 14:47:24 +00:00
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
range-compare.ll
removed-use.ll Fix typo in a test. 2018-04-20 13:51:36 +00:00
select.ll [JumpThreading] Track unreachable BBs to avoid processing 2018-03-16 15:13:47 +00:00
static-profile.ll
thread-cmp.ll
thread-loads.ll [Local] Keep K's range if K does not move when combining metadata. 2018-10-27 16:53:45 +00:00
threading_prof1.ll
threading_prof2.ll
update-edge-weight.ll