llvm-project/llvm/test/Analysis
Max Kazantsev 2e44d2969a [ScalarEvolution] Re-enable Predicate implication from operations
The patch rL298481 was reverted due to crash on clang-with-lto-ubuntu build.
The reason of the crash was type mismatch between either a or b and RHS in the following situation:

  LHS = sext(a +nsw b) > RHS.

This is quite rare, but still possible situation. Normally we need to cast all {a, b, RHS} to their widest type.
But we try to avoid creation of new SCEV that are not constants to avoid initiating recursive analysis that
can take a lot of time and/or cache a bad value for iterations number. To deal with this, in this patch we
reject this case and will not try to analyze it if the type of sum doesn't match with the type of RHS. In this
situation we don't need to create any non-constant SCEVs.

This patch also adds an assertion to the method IsProvedViaContext so that we could fail on it and not
go further into range analysis etc (because in some situations these analyzes succeed even when the passed
arguments have wrong types, what should not normally happen).

The patch also contains a fix for a problem with too narrow scope of the analysis caused by wrong
usage of predicates in recursive invocations.

The regression test on the said failure: test/Analysis/ScalarEvolution/implied-via-addition.ll

Reviewers: reames, apilipenko, anna, sanjoy

Reviewed By: sanjoy

Subscribers: mzolotukhin, mehdi_amini, llvm-commits

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

llvm-svn: 299205
2017-03-31 12:05:30 +00:00
..
AliasSet [AliasSetTracker] Make AST smarter about assume intrinsics that don't actually affect memory. 2016-11-07 14:11:45 +00:00
AssumptionCache Add files I seem to have dropped in my revert (r290086). 2016-12-19 08:32:13 +00:00
BasicAA [BasicAA] Take attributes into account when requesting modref info for a call site 2017-03-01 13:19:51 +00:00
BlockFrequencyInfo [BFI] Add new LazyBFI analysis pass 2016-07-13 05:01:48 +00:00
BranchProbabilityInfo Enhance calcColdCallHeuristics for InvokeInst 2016-09-23 17:26:14 +00:00
CFLAliasAnalysis [Verifier] Add verification for TBAA metadata 2016-12-11 20:07:15 +00:00
CallGraph [CG] Add a new pass manager printer pass for the old call graph and 2016-03-10 11:24:11 +00:00
ConstantFolding [ConstantFolding] Fix to prevent constant folding having to repeatedly scan operands. NFCI 2017-03-21 10:17:39 +00:00
CostModel AMDGPU: Mark all unspecified CC functions in tests as amdgpu_kernel 2017-03-21 21:39:51 +00:00
Delinearization [ValueTracking] Make poison propagation more aggressive 2017-02-22 06:52:32 +00:00
DemandedBits Port DemandedBits to the new pass manager. 2016-04-18 23:55:01 +00:00
DependenceAnalysis [DependenceAnalysis] Check if result of getConstantPart is null 2016-04-04 18:13:18 +00:00
DivergenceAnalysis AMDGPU: Add all atomicrmw fields to atomic.inc/dec 2017-03-30 22:21:40 +00:00
DominanceFrontier Another fix the testcase introduced by r261903 - Add the missing matches 2016-02-26 03:41:47 +00:00
Dominators Remove useless pass from the pipeline in test/Analysis/Dominators/2007-01-14-BreakCritEdges.ll. 2016-07-25 16:27:34 +00:00
GlobalsModRef Fix regression from my recent GlobalsAA fix. 2016-10-24 21:47:44 +00:00
IVUsers [PM] Teach the LoopPassManager to automatically canonicalize loops by 2017-01-17 19:18:12 +00:00
LazyCallGraph [LCG] Spell the printing pass pipeline name for the lazy call graph 2016-03-10 11:24:06 +00:00
LazyValueAnalysis [LVI] Add an LVI printer pass to capture test LVI cache after transformations 2017-03-22 19:27:12 +00:00
Lint
LoopAccessAnalysis [LV/LoopAccess] Check statically if an unknown dependence distance can be 2017-02-12 09:32:53 +00:00
LoopInfo
MemoryDependenceAnalysis [PM] The assumption cache is fundamentally designed to be self-updating, 2017-01-15 00:26:18 +00:00
PostDominators Revert "Fix PR 24415 (at least), by making our post-dominator tree behavior sane." 2017-03-02 21:08:37 +00:00
ProfileSummary Reapply r271728 after adding move cobstructor for ProfileSummaryInfo 2016-06-03 22:54:26 +00:00
RegionInfo Fix minor typo introduce in r297014 2017-03-06 16:03:26 +00:00
ScalarEvolution [ScalarEvolution] Re-enable Predicate implication from operations 2017-03-31 12:05:30 +00:00
ScopedNoAliasAA [ScopedNoAliasAA] Make test basic.ll less confusing 2016-03-07 17:49:10 +00:00
TypeBasedAliasAnalysis [TBAAVerifier] Be stricter around verifying scalar nodes 2016-12-29 15:47:05 +00:00
ValueTracking [ValueTracking] use nonnull argument attribute to eliminate null checks 2017-02-12 15:35:34 +00:00
alias-analysis-uses.ll Add an "addUsedAAAnalyses" helper function 2016-02-09 01:21:57 +00:00