llvm-project/llvm/test/Analysis
Max Kazantsev d41faecc49 [SCEV] Fix buggy behavior in getAddExpr with truncs
SCEV tries to constant-fold arguments of trunc operands in SCEVAddExpr, and when it does
that, it passes wrong flags into the recursion. It is only valid to pass flags that are proved for
narrow type into a computation in wider type if we can prove that trunc instruction doesn't
actually change the value. If it did lose some meaningful bits, we may end up proving wrong
no-wrap flags for sum of arguments of trunc.

In the provided test we end up with `nuw` where it shouldn't be because of this bug.

The solution is to conservatively pass `SCEV::FlagAnyWrap` which is always a valid thing to do.

Reviewed By: sanjoy
Differential Revision: https://reviews.llvm.org/D49471

llvm-svn: 337435
2018-07-19 01:46:21 +00:00
..
AliasSet [AliasSet] Teach the alias set how to handle atomic memcpy/memmove/memset 2018-05-30 14:43:39 +00:00
AssumptionCache
BasicAA [BasicAA] Teach the analysis about atomic memcpy 2018-05-29 19:23:50 +00:00
BlockFrequencyInfo [BPI] Apply invoke heuristic before loop branch heuristic 2018-06-08 13:03:21 +00:00
BranchProbabilityInfo [BPI] Apply invoke heuristic before loop branch heuristic 2018-06-08 13:03:21 +00:00
CFLAliasAnalysis Revert r332657: "[AA] cfl-anders-aa with field sensitivity" 2018-05-17 21:56:39 +00:00
CallGraph Remove alignment argument from memcpy/memmove/memset in favour of alignment attributes (Step 1) 2018-01-19 17:13:12 +00:00
ConstantFolding [ConstantFold] Disallow folding vector geps into bitcasts 2018-06-01 19:34:35 +00:00
CostModel [TargetTransformInfo] Add pow2 analysis for scalar constants 2018-07-11 17:51:27 +00:00
Delinearization Re-apply "[SCEV] Strengthen StrengthenNoWrapFlags (reapply r334428)." 2018-07-13 23:58:46 +00:00
DemandedBits Fix tests after move to utohexstr. 2017-12-28 17:00:37 +00:00
DependenceAnalysis [DA] Delinearise AddRecs if we can prove they don't wrap 2018-06-25 15:13:26 +00:00
DivergenceAnalysis DivergenceAnalysis: added debug output 2018-07-13 13:13:30 +00:00
DominanceFrontier
Dominators [Dominators] Don't compute DFS InOut numbers eagerly. 2017-06-30 01:28:21 +00:00
GlobalsModRef [DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label. 2018-05-09 02:40:45 +00:00
IVUsers Re-apply "[SCEV] Strengthen StrengthenNoWrapFlags (reapply r334428)." 2018-07-13 23:58:46 +00:00
LazyCallGraph
LazyValueAnalysis [JumpThreading] Preservation of DT and LVI across the pass 2018-01-12 21:06:48 +00:00
Lint [Lint] Upgrade uses of MemoryIntrinic::getAlignment() to new API. (NFCI) 2018-01-31 16:42:15 +00:00
LoopAccessAnalysis Re-apply "[SCEV] Strengthen StrengthenNoWrapFlags (reapply r334428)." 2018-07-13 23:58:46 +00:00
LoopInfo
MemoryDependenceAnalysis [MemDep] Fixed handling of invariant.group 2018-05-18 22:40:34 +00:00
MemorySSA llvm: Add support for "-fno-delete-null-pointer-checks" 2018-07-09 22:27:23 +00:00
MustExecute [LICM] Extend the MustExecute scope 2018-05-18 04:56:28 +00:00
PhiValues Add a PhiValuesAnalysis pass to calculate the underlying values of phis 2018-06-28 14:13:06 +00:00
PostDominators [Dominators] Include infinite loops in PostDominatorTree 2017-08-15 18:14:57 +00:00
ProfileSummary
RegionInfo [Dominators] Include infinite loops in PostDominatorTree 2017-08-15 18:14:57 +00:00
ScalarEvolution [SCEV] Fix buggy behavior in getAddExpr with truncs 2018-07-19 01:46:21 +00:00
ScopedNoAliasAA
TypeBasedAliasAnalysis [Analysis] Support aggregate access types in TBAA 2018-02-02 14:09:22 +00:00
ValueTracking Simplify recursive launder.invariant.group and strip 2018-07-12 23:55:20 +00:00
alias-analysis-uses.ll