llvm-project/llvm/test/Analysis/ScalarEvolution
Max Kazantsev 8d0322e612 [SCEV] Use depth limit instead of local cache for SExt and ZExt
In rL300494 there was an attempt to deal with excessive compile time on
invocations of getSign/ZeroExtExpr using local caching. This approach only
helps if we request the same SCEV multiple times throughout recursion. But
in the bug PR33431 we see a case where we request different values all the time,
so caching does not help and the size of the cache grows enormously.

In this patch we remove the local cache for this methods and add the recursion
depth limit instead, as we do for arithmetics. This gives us a guarantee that the
invocation sequence is limited and reasonably short.

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

llvm-svn: 306785
2017-06-30 05:04:09 +00:00
..
2007-07-15-NegativeStride.ll [opaque pointer type] Add textual IR support for explicit type parameter to getelementptr instruction 2015-02-27 19:29:02 +00:00
2007-08-06-MisinterpretBranch.ll
2007-08-06-Unsigned.ll
2007-09-27-LargeStepping.ll
2007-11-14-SignedAddRec.ll
2007-11-18-OrInstruction.ll
2008-02-11-ReversedCondition.ll
2008-02-12-SMAXTripCount.ll
2008-02-15-UMax.ll
2008-05-25-NegativeStepToZero.ll
2008-06-12-BinomialInt64.ll
2008-07-12-UnneededSelect1.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2008-07-12-UnneededSelect2.ll
2008-07-19-InfiniteLoop.ll
2008-07-19-WrappingIV.ll
2008-07-29-SGTTripCount.ll
2008-07-29-SMinExpr.ll
2008-08-04-IVOverflow.ll
2008-08-04-LongAddRec.ll
2008-11-02-QuadraticCrash.ll
2008-11-15-CubicOOM.ll
2008-11-18-LessThanOrEqual.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
2008-11-18-Stride1.ll
2008-11-18-Stride2.ll
2008-12-08-FiniteSGE.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2008-12-11-SMaxOverflow.ll
2008-12-14-StrideAndSigned.ll
2008-12-15-DontUseSDiv.ll
2009-01-02-SignedNegativeStride.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2009-04-22-TruncCast.ll
2009-05-09-PointerEdgeCount.ll [opaque pointer type] Add textual IR support for explicit type parameter to getelementptr instruction 2015-02-27 19:29:02 +00:00
2009-07-04-GroupConstantsWidthMismatch.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
2010-09-03-RequiredTransitive.ll
2011-03-09-ExactNoMaxBECount.ll
2011-04-26-FoldAddRec.ll [PM] Clean up the testing for IVUsers, especially with the new PM. 2017-01-15 09:29:27 +00:00
2011-10-04-ConstEvolve.ll
2012-03-26-LoadConstant.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
2012-05-18-LoopPredRecurse.ll [PM] Clean up the testing for IVUsers, especially with the new PM. 2017-01-15 09:29:27 +00:00
2012-05-29-MulAddRec.ll
SolveQuadraticEquation.ll [opaque pointer type] Add textual IR support for explicit type parameter to getelementptr instruction 2015-02-27 19:29:02 +00:00
ZeroStep.ll [SCEV] createAddRecFromPHI: Optimize for the most common case. 2017-05-03 23:53:38 +00:00
and-xor.ll
avoid-assume-hang.ll ScalarEvolution assume hanging bugfix 2015-09-09 20:47:30 +00:00
avoid-infinite-recursion-0.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
avoid-infinite-recursion-1.ll [PM] Clean up the testing for IVUsers, especially with the new PM. 2017-01-15 09:29:27 +00:00
avoid-smax-0.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
avoid-smax-1.ll Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +00:00
constant_condition.ll Revert "Revert "This patch builds on top of D13378 to handle constant condition."" 2015-10-07 18:14:25 +00:00
different-loops-recs.ll Re-enable "[SCEV] Do not fold dominated SCEVUnknown into AddRecExpr start" 2017-05-26 06:47:04 +00:00
div-overflow.ll
do-loop.ll
exhaustive-trip-counts.ll [SCEV] Compute max be count from shift operator only if all else fails 2016-06-30 02:47:28 +00:00
expander-replace-congruent-ivs.ll [SCEVExpander] Fix a failed cast<> assertion 2016-05-11 17:41:41 +00:00
exponential-behavior.ll [SCEV] Fix exponential time complexity by caching 2017-04-24 00:09:46 +00:00
ext-antecedent.ll [SCEV] Revert bailout added in r75511. 2015-03-26 17:28:26 +00:00
flags-from-poison-dbg.ll Teach isGuarantdToTransferExecToSuccessor about debug info intrinsics 2016-06-08 17:48:36 +00:00
flags-from-poison.ll Rename isKnownNotFullPoison to programUndefinedIfPoison; NFC 2017-04-30 19:41:19 +00:00
fold.ll When simplifying a SCEV truncate by distributing, consider it a simplification to replace a cast, even if we end up with a trunc around the term. Fixes PR22960! 2015-03-20 02:25:00 +00:00
guards.ll [SCEV] Use guards to prove predicates 2016-05-10 00:31:49 +00:00
how-far-to-zero.ll
implied-via-addition.ll [ScalarEvolution] Re-enable Predicate implication from operations 2017-03-31 12:05:30 +00:00
implied-via-division.ll [ScalarEvolution] Re-enable Predicate implication from operations 2017-03-31 12:05:30 +00:00
incorrect-nsw.ll
increasing-or-decreasing-iv.ll Remove trailing newline from test case; NFC 2016-03-09 01:51:44 +00:00
infer-prestart-no-wrap.ll [SCEV] Don't always add no-wrap flags to post-inc add recs 2016-05-29 00:32:17 +00:00
infer-via-ranges.ll [SCEV] Make isImpliedCond smarter. 2015-03-18 00:41:29 +00:00
invalidation.ll [PM] The assumption cache is fundamentally designed to be self-updating, 2017-01-15 00:26:18 +00:00
latch-dominating-conditions.ll [SCEV] Look at backedge dominating conditions (re-land r233447). 2015-04-01 18:24:06 +00:00
limit-depth.ll [SCEV] Use depth limit instead of local cache for SExt and ZExt 2017-06-30 05:04:09 +00:00
load-with-range-metadata.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
load.ll [SCEV] Add a `scalar-evolution-print-constant-ranges' option 2015-03-09 21:43:39 +00:00
max-addops-inline.ll [SCEV] Introduce add operation inlining limit 2017-01-26 13:33:17 +00:00
max-mulops-inline.ll [SCEV] Add a threshold to restrict number of mul operands to be inlined into SCEV 2016-10-20 21:38:39 +00:00
max-trip-count-address-space.ll [SCEV] Add a `scalar-evolution-print-constant-ranges' option 2015-03-09 21:43:39 +00:00
max-trip-count.ll [SCEV] Make howFarToZero max backedge-taken count check for precondition. 2017-01-11 21:07:15 +00:00
min-max-exprs.ll [SCEV] Mark AddExprs as nsw or nuw if legal 2015-10-22 19:57:19 +00:00
no-wrap-add-exprs.ll [SCEV] Commute zero extends through <nuw> additions 2015-10-22 19:57:38 +00:00
no-wrap-unknown-becount.ll Revert @llvm.assume with operator bundles (r289755-r289757) 2016-12-19 08:22:17 +00:00
non-IV-phi.ll [SCEV] Generalize the SCEV algorithm for creating expressions for PHI nodes 2015-10-30 15:02:28 +00:00
nowrap-preinc-limits.ll [SCEV] Don't always add no-wrap flags to post-inc add recs 2016-05-29 00:32:17 +00:00
nsw-offset-assume.ll Revert @llvm.assume with operator bundles (r289755-r289757) 2016-12-19 08:22:17 +00:00
nsw-offset.ll [SCEV] No-wrap flags are not propagated when folding "{S,+,X}+T ==> {S+T,+,X}" 2016-05-25 13:01:33 +00:00
nsw.ll [SCEV] Clarify behavior around max backedge taken count 2017-05-22 06:46:04 +00:00
nw-sub-is-not-nw-add.ll
overflow-intrinsics.ll [SCEV] See through op.with.overflow intrinsics (re-apply) 2016-05-29 00:34:42 +00:00
pointer-sign-bits.ll
pr3909.ll
pr18606-min-zeros.ll [SCEV] Cache results during GetMinTrailingZeros query 2017-02-14 15:53:12 +00:00
pr18606.ll [SCEV] Memoize visitMulExpr results in SCEVRewriteVisitor. 2016-10-21 20:05:21 +00:00
pr22179.ll [opaque pointer type] Add textual IR support for explicit type parameter to gep operator 2015-03-13 18:20:45 +00:00
pr22641.ll Fix bug 22641 2015-02-24 01:02:42 +00:00
pr22674.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
pr22856.ll [SCEV] Fix PR22856. 2015-03-13 18:31:19 +00:00
pr24757.ll [SCEV] Make getUDivExactExpr handle non-nuw multiplies correctly. 2017-01-18 23:56:42 +00:00
pr25369.ll [SCEV] Fix PR25369 2015-11-02 02:06:01 +00:00
pr27315.ll [SCEV] Don't always add no-wrap flags to post-inc add recs 2016-05-29 00:32:17 +00:00
pr28705.ll Fix the runtime error caused by "Use ValueOffsetPair to enhance value reuse during SCEV expansion". 2016-08-09 20:40:03 +00:00
predicated-trip-count.ll Re-commit [SCEV] Introduce a guarded backedge taken count and use it in LAA and LV 2016-04-08 14:29:09 +00:00
range-signedness.ll [SCEV] Unify getUnsignedRange and getSignedRange 2015-03-09 21:43:43 +00:00
returned.ll Teach SCEV to look through returned-argument functions 2016-07-11 02:48:23 +00:00
scev-aa.ll [PM/AA] Wire up SCEVAA to the new pass manager's registry and test it. 2016-02-20 04:01:45 +00:00
scev-canonical-mode.ll This patch is to fix PR26529 caused by r259736. 2016-02-09 00:07:08 +00:00
scev-dispositions.ll [SCEV] Tweak the output format and content of -analyze 2016-05-03 17:49:57 +00:00
scev-expander-existing-value-offset.ll Recommit "Use ValueOffsetPair to enhance value reuse during SCEV expansion". 2016-08-09 20:37:50 +00:00
scev-expander-incorrect-nowrap.ll Bugfix: SCEVExpander incorrectly marks increment operations as no-wrap 2015-02-25 20:02:59 +00:00
scev-expander-reuse-gep.ll Create a getelementptr instead of sub expr for ValueOffsetPair if the 2016-09-14 04:39:50 +00:00
scev-expander-reuse-unroll.ll [UNROLL] Postpone ScalarEvolution::forgetLoop after TripCountSC is expanded 2016-08-25 16:17:18 +00:00
scev-expander-reuse-vect.ll [UNROLL] Postpone ScalarEvolution::forgetLoop after TripCountSC is expanded 2016-08-25 16:17:18 +00:00
scev-invalid.ll
scev-prestart-nowrap.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
sext-inreg.ll [SCEV] Simplify/generalize howFarToZero solving. 2017-01-31 00:42:42 +00:00
sext-iv-0.ll [SCEV] Add a `scalar-evolution-print-constant-ranges' option 2015-03-09 21:43:39 +00:00
sext-iv-1.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
sext-iv-2.ll [opaque pointer type] Add textual IR support for explicit type parameter to gep operator 2015-03-13 18:20:45 +00:00
sext-mul.ll Model ashr(shl(x, n), m) as mul(x, 2^(n-m)) when n > m 2017-03-23 18:06:09 +00:00
sext-to-zext.ll [SCEV] Be less eager about demoting zexts to sexts 2016-03-03 18:31:23 +00:00
sext-zero.ll Model ashr(shl(x, n), m) as mul(x, 2^(n-m)) when n > m 2017-03-23 18:06:09 +00:00
shift-op.ll [SCEV] Compute max backedge count for loops with "shift ivs" 2015-10-28 21:27:14 +00:00
sle.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
smax-br-phi-idioms.ll [SCEV] Don't infinitely recurse on unreachable code 2016-08-05 18:34:14 +00:00
smax.ll
trip-count-pow2.ll [SCEV] Clarify behavior around max backedge taken count 2017-05-22 06:46:04 +00:00
trip-count-switch.ll
trip-count-unknown-stride.ll Reapplying r278731 after fixing the problem that caused it to be reverted. 2016-09-16 14:38:13 +00:00
trip-count.ll Be wary of abnormal exits from loop when exploiting UB 2016-06-09 01:13:59 +00:00
trip-count2.ll [opaque pointer type] Add textual IR support for explicit type parameter to getelementptr instruction 2015-02-27 19:29:02 +00:00
trip-count3.ll Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +00:00
trip-count4.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
trip-count5.ll [SCEV] Un-grep'ify tests; NFC 2016-08-05 20:33:49 +00:00
trip-count6.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
trip-count7.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
trip-count8.ll
trip-count9.ll
trip-count10.ll
trip-count11.ll [SCEV] Add a `scalar-evolution-print-constant-ranges' option 2015-03-09 21:43:39 +00:00
trip-count12.ll [opaque pointer type] Add textual IR support for explicit type parameter to load instruction 2015-02-27 21:17:42 +00:00
trip-count13.ll [LoopUnroll] Keep the loop test only on the first iteration of max-or-zero loops 2016-10-21 11:08:48 +00:00
trip-count14.ll [LoopUnroll] Keep the loop test only on the first iteration of max-or-zero loops 2016-10-21 11:08:48 +00:00
tripmultiple_calculation.ll [SCEV] Fix trip multiple calculation 2017-03-20 20:25:46 +00:00
undefined.ll
unreachable-code.ll
unsimplified-loop.ll
zext-signed-addrec.ll [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
zext-wrap.ll [SCEV] Compute affine range in another way to avoid bitwidth extending. 2017-03-16 21:07:38 +00:00