forked from OSchip/llvm-project
15930bf352
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 |
||
---|---|---|
.. | ||
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 | ||
and-and-cond.ll | ||
and-cond.ll | ||
assume-edge-dom.ll | ||
assume.ll | ||
basic.ll | ||
bb-unreachable-from-entry.ll | ||
branch-no-const.ll | ||
combine-metadata.ll | ||
compare.ll | ||
conservative-lvi.ll | ||
crash.ll | ||
ddt-crash.ll | ||
ddt-crash2.ll | ||
ddt-crash3.ll | ||
ddt-crash4.ll | ||
degenerate-phi.ll | ||
fold-not-thread.ll | ||
guards.ll | ||
header-succ.ll | ||
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 | ||
pr9331.ll | ||
pr15851_hang.ll | ||
pr22086.ll | ||
pr26096.ll | ||
pr27840.ll | ||
pr33605.ll | ||
pr33917.ll | ||
pr36133.ll | ||
range-compare.ll | ||
removed-use.ll | ||
select.ll | ||
static-profile.ll | ||
thread-cmp.ll | ||
thread-loads.ll | ||
threading_prof1.ll | ||
threading_prof2.ll | ||
update-edge-weight.ll |