1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 18:54:02 +01:00
llvm-mirror/test/Analysis/ScalarEvolution
Eli Friedman 05a71b0a6d [ScalarEvolution] Fix overflow in computeBECount.
The current implementation of computeBECount doesn't account for the
possibility that adding "Stride - 1" to Delta might overflow. For almost
all loops, it doesn't, but it's not actually proven anywhere.

To deal with this, use a variety of tricks to try to prove that the
addition doesn't overflow.  If the proof is impossible, use an alternate
sequence which never overflows.

Differential Revision: https://reviews.llvm.org/D105216
2021-07-16 16:15:18 -07:00
..
2007-07-15-NegativeStride.ll
2007-08-06-MisinterpretBranch.ll [NFCI] SCEVExpander: emit intrinsics for integral {u,s}{min,max} SCEV expressions 2021-03-06 21:52:46 +03:00
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
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
2008-11-18-Stride1.ll Revert "[ScalarEvolution] Fix overflow in computeBECount." 2021-07-09 14:26:48 +03:00
2008-11-18-Stride2.ll [ScalarEvolution] Fix overflow in computeBECount. 2021-07-16 16:15:18 -07:00
2008-12-08-FiniteSGE.ll
2008-12-11-SMaxOverflow.ll
2008-12-14-StrideAndSigned.ll
2008-12-15-DontUseSDiv.ll
2009-01-02-SignedNegativeStride.ll
2009-04-22-TruncCast.ll
2009-05-09-PointerEdgeCount.ll
2009-07-04-GroupConstantsWidthMismatch.ll
2010-09-03-RequiredTransitive.ll
2011-03-09-ExactNoMaxBECount.ll
2011-04-26-FoldAddRec.ll
2011-10-04-ConstEvolve.ll
2012-03-26-LoadConstant.ll
2012-05-18-LoopPredRecurse.ll
2012-05-29-MulAddRec.ll
abs-intrinsic.ll [SCEV] Recognize @llvm.abs as smax(x, -x) 2020-09-21 20:25:53 +03:00
add-expr-pointer-operand-sorting.ll [SCEV] Use both known bits and sign bits when computing range of SCEV unknowns 2021-02-19 08:29:12 -08:00
add-like-or.ll
and-xor.ll
ashr.ll Revert "[SCEV] Model ashr exact x, C as (abs(x) EXACT/u (1<<C)) * signum(x)" 2021-04-18 16:26:45 +03:00
avoid-assume-hang.ll
avoid-infinite-recursion-0.ll
avoid-infinite-recursion-1.ll
avoid-smax-0.ll
avoid-smax-1.ll
binomial-explision.ll
cache_loop_exit_limit.ll
constant_condition.ll
depth-limit-overrun.ll
different-loops-recs.ll
div-overflow.ll
do-loop.ll
exact_iter_count.ll
exact-exit-count-more-precise.ll [Test] Auto-update checks in a test 2020-11-20 16:53:51 +07:00
exhaustive-trip-counts.ll
exit-count-select.ll [SCEV] recognize logical and/or pattern 2021-01-01 04:37:57 +09:00
expander-replace-congruent-ivs.ll
exponential-behavior.ll
ext-antecedent.ll
extract-highbits-sameconstmask.ll [SCEV] Use both known bits and sign bits when computing range of SCEV unknowns 2021-02-19 08:29:12 -08:00
extract-highbits-variablemask.ll
extract-lowbits-sameconstmask.ll
extract-lowbits-variablemask.ll
flags-from-poison-dbg.ll
flags-from-poison.ll
flattened-0.ll
fold.ll [SCEV] Fold (0 udiv %x) to 0 2021-06-30 08:31:13 -07:00
guards.ll
how-far-to-zero.ll
huge_expression_limit.ll
implied-via-addition.ll
implied-via-division.ll
incorrect-exit-count.ll [SCEV] Fix incorrect loop exit count analysis. 2021-01-27 19:36:05 +08:00
incorrect-nsw.ll
increasing-or-decreasing-iv.ll [SCEV] Use both known bits and sign bits when computing range of SCEV unknowns 2021-02-19 08:29:12 -08:00
infer-prestart-no-wrap.ll
infer-via-ranges.ll
inner-loop-by-latch-cond-unknown.ll
invalidation.ll
latch-dominating-conditions.ll
limit-depth.ll [SCEV] Always constant fold mul expression operands 2020-10-25 18:50:06 +01:00
load-with-range-metadata.ll
load.ll Reland [SCEV] Improve modelling for (null) pointer constants 2021-03-13 16:05:34 +03:00
lshr-shl-differentconstmask.ll
lt-overflow.ll [NFC][ScalarEvolution] Precommit tests for D104075. 2021-07-09 23:33:19 -07:00
max-addops-inline.ll
max-addrec-size.ll
max-backedge-taken-count-guard-info.ll [SCEV] Support single-cond range check idiom in applyLoopGuards. 2021-06-25 10:24:40 +01:00
max-backedge-taken-count-limit-by-wrapping.ll [SCEV] Add additional tests where the max BTC is limited by wrapping. 2020-10-16 20:36:02 +01:00
max-be-count-not-constant.ll [SCEV] Use both known bits and sign bits when computing range of SCEV unknowns 2021-02-19 08:29:12 -08:00
max-expr-cache.ll
max-mulops-inline.ll
max-trip-count-address-space.ll [SCEV] Support signed predicates in applyLoopGuards. 2021-06-23 10:21:05 +01:00
max-trip-count.ll [NFC][ScalarEvolution] Precommit tests for D104075. 2021-07-09 23:33:19 -07:00
merge-add-rec-many-inputs.ll
min-max-exprs.ll
minmax-intrinsics.ll [SCEV] Recognize min/max intrinsics 2020-09-05 16:30:11 +02:00
multiple-max-iterations.ll
ne-overflow.ll [tests] Precommit test for D103991 2021-06-09 15:05:54 -07:00
no-wrap-add-exprs.ll [SCEV] Keep common NUW flags when inlining Add operands. 2021-06-09 17:13:21 +01:00
no-wrap-symbolic-becount.ll [ScalarEvolution] Ensure backedge-taken counts are not pointers. 2021-06-21 16:24:16 -07:00
no-wrap-unknown-becount.ll
non-IV-phi.ll
nowrap-preinc-limits.ll
nsw-offset-assume.ll [SCEV] Fix nsw flags for GEP expressions 2020-11-13 18:19:32 +01:00
nsw-offset.ll [SCEV] Fix nsw flags for GEP expressions 2020-11-13 18:19:32 +01:00
nsw.ll [ScalarEvolution] Ensure backedge-taken counts are not pointers. 2021-06-21 16:24:16 -07:00
nw-sub-is-not-nw-add.ll
overflow-intrinsics-trip-count.ll
overflow-intrinsics.ll
pointer-sign-bits.ll
pr3909.ll
pr18606-min-zeros.ll
pr18606.ll
pr22179.ll
pr22641.ll Revert "[SCEV] Factor out part of wrap flag detection logic [NFC-ish]" 2020-11-15 10:19:44 +01:00
pr22674.ll Revert "[NFC] remove explicit default value for strboolattr attribute in tests" 2021-05-24 19:43:40 +02:00
pr22856.ll
pr24757.ll
pr25369.ll
pr27315.ll
pr34538.ll
pr35890.ll
pr40420.ll
pr44605.ll
pr46786.ll [ScalarEvolution] Fix pointer/int type handling converting select/phi to min/max. 2021-06-17 14:05:12 -07:00
pr48225.ll [SCEV] Fix incorrect treatment of max taken count. PR48225 2020-11-23 16:52:39 +07:00
pr49856.ll [SCEV] Fix false-positive recognition of simple recurrences. PR49856 2021-04-07 13:55:17 +07:00
predicated-trip-count.ll
ptrtoint-constantexpr-loop.ll [SCEV] Use both known bits and sign bits when computing range of SCEV unknowns 2021-02-19 08:29:12 -08:00
ptrtoint.ll [ScalarEvolution] Ensure backedge-taken counts are not pointers. 2021-06-21 16:24:16 -07:00
range_nw_flag.ll
range-signedness.ll
ranges.ll Add datalayout to test added in 7e3183d73 2021-02-19 13:10:19 -08:00
returned.ll
saturating-intrinsics.ll [SCEV] Recognize @llvm.uadd.sat as %y + umin(%x, (-1 - %y)) 2020-09-21 20:25:54 +03:00
scalable-vector.ll Reland [SCEV] Improve modelling for (null) pointer constants 2021-03-13 16:05:34 +03:00
scev-aa.ll
scev-canonical-mode.ll Revert "[NFC] remove explicit default value for strboolattr attribute in tests" 2021-05-24 19:43:40 +02:00
scev-dispositions.ll
scev-expander-existing-value-offset.ll
scev-expander-incorrect-nowrap.ll
scev-expander-reuse-gep.ll
scev-expander-reuse-unroll.ll
scev-expander-reuse-vect.ll
scev-invalid.ll
scev-prestart-nowrap.ll
sdiv.ll [SCEV] Fix nsw flags for GEP expressions 2020-11-13 18:19:32 +01:00
sext-inreg.ll
sext-iv-0.ll
sext-iv-1.ll
sext-iv-2.ll Revert "[SCEV] Factor out part of wrap flag detection logic [NFC-ish]" 2020-11-15 10:19:44 +01:00
sext-mul.ll [SCEV] Support signed predicates in applyLoopGuards. 2021-06-23 10:21:05 +01:00
sext-to-zext.ll [SCEV] Use both known bits and sign bits when computing range of SCEV unknowns 2021-02-19 08:29:12 -08:00
sext-zero.ll
shift-op.ll
shift-recurrences.ll [SCEV] Compute ranges for ashr recurrences 2021-04-28 12:36:20 -07:00
shl-lshr-differentconstmask.ll
sle.ll
smax-br-phi-idioms.ll
smin-smax-folds.ll
solve-quadratic-i1.ll Revert D71539 "Recommit "[SCEV] Look through single value PHIs."" 2020-09-21 17:21:43 -07:00
solve-quadratic-overflow.ll Revert D71539 "Recommit "[SCEV] Look through single value PHIs."" 2020-09-21 17:21:43 -07:00
solve-quadratic.ll
SolveQuadraticEquation.ll
srem.ll [SCEV] Fix nsw flags for GEP expressions 2020-11-13 18:19:32 +01:00
strip-injective-zext.ll
trip-count2.ll
trip-count3.ll
trip-count4.ll
trip-count5.ll
trip-count6.ll
trip-count7.ll
trip-count8.ll
trip-count9.ll [ScalarEvolution] Make isKnownNonZero handle more cases. 2021-07-13 15:36:45 -07:00
trip-count10.ll
trip-count11.ll
trip-count12.ll
trip-count13.ll [NFC][ScalarEvolution] Precommit tests for D104075. 2021-07-09 23:33:19 -07:00
trip-count14.ll
trip-count15.ll [SCEV] Strength nowrap flags after constant folding 2020-10-25 18:00:22 +01:00
trip-count-andor-selectform.ll [SCEV] recognize logical and/or pattern 2021-01-01 04:37:57 +09:00
trip-count-andor.ll
trip-count-negative-stride.ll [tests] Precommit test for D104140 2021-07-16 10:57:59 -07:00
trip-count-non-unit-stride.ll [SCEV] Add test for non-unit stride with multiple exits (NFC) 2021-05-02 18:14:05 +02:00
trip-count-pow2.ll
trip-count-switch.ll
trip-count-unknown-stride.ll [ScalarEvolution] Fix overflow in computeBECount. 2021-07-16 16:15:18 -07:00
trip-count.ll
trip-multiple-guard-info.ll [SCEV] Apply loop guards to divisibility tests 2021-02-02 08:09:39 +02:00
tripmultiple_calculation.ll [SCEV] Compute trip multiple for multiple exit loops 2021-05-26 11:52:25 -07:00
trivial-phis.ll [test][NewPM] Clean up ScalarEvolution tests to work under NPM 2020-09-22 19:31:10 -07:00
trunc-simplify.ll [SCEV] Simplify trunc to zero based on known bits 2021-01-03 13:57:12 +02:00
truncate.ll
umin-umax-folds.ll
undefined.ll
unknown_phis.ll
unreachable-code.ll
unsimplified-loop.ll
urem-0.ll
widenable-condition.ll
ZeroStep.ll
zext-divrem.ll [SCEV] Strenthen nowrap flags after constant folding for mul exprs 2020-10-25 19:43:58 +01:00
zext-mul.ll
zext-signed-addrec.ll
zext-wrap.ll [SCEV] Improve handling of not expressions in isImpliedCond() 2021-03-24 21:53:02 +01:00