llvm/test/Transforms
Silviu Baranga e942cf87e8 [SCEV][LAA] Re-commit r260085 and r260086, this time with a fix for the memory
sanitizer issue. The PredicatedScalarEvolution's copy constructor
wasn't copying the Generation value, and was leaving it un-initialized.

Original commit message:

[SCEV][LAA] Add no wrap SCEV predicates and use use them to improve strided pointer detection

Summary:
This change adds no wrap SCEV predicates with:
  - support for runtime checking
  - support for expression rewriting:
      (sext ({x,+,y}) -> {sext(x),+,sext(y)}
      (zext ({x,+,y}) -> {zext(x),+,sext(y)}

Note that we are sign extending the increment of the SCEV, even for
the zext case. This is needed to cover the fairly common case where y would
be a (small) negative integer. In order to do this, this change adds two new
flags: nusw and nssw that are applicable to AddRecExprs and permit the
transformations above.

We also change isStridedPtr in LAA to be able to make use of
these predicates. With this feature we should now always be able to
work around overflow issues in the dependence analysis.

Reviewers: mzolotukhin, sanjoy, anemet

Subscribers: mzolotukhin, sanjoy, llvm-commits, rengolin, jmolloy, hfinkel

Differential Revision: http://reviews.llvm.org/D15412



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260112 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-08 17:02:45 +00:00
..
ADCE
AddDiscriminators
AlignmentFromAssumptions
ArgumentPromotion
AtomicExpand
BBVectorize
BDCE
BranchFolding
CodeExtractor
CodeGenPrepare [InstCombine] Rewrite bswap/bitreverse handling completely. 2016-01-15 09:20:19 +00:00
ConstantHoisting
ConstantMerge
ConstProp
CorrelatedValuePropagation [LVI] Introduce an intersect operation on lattice values 2016-02-02 03:15:40 +00:00
CrossDSOCFI [cfi] Cross-DSO CFI diagnostic mode (LLVM part). 2016-01-25 23:35:03 +00:00
DeadArgElim
DeadStoreElimination [BasicAliasAnalysis] Take into account operand bundles in the getModRefInfo function 2016-01-16 12:15:53 +00:00
EarlyCSE
EliminateAvailableExternally
Float2Int
ForcedFunctionAttrs
FunctionAttrs
FunctionImport Fix bot failure from r257493: remove extraneous temp file read 2016-01-12 17:53:59 +00:00
GCOVProfiling [GCOV] Avoid emitting profile arcs for module and skeleton CUs 2016-01-21 17:04:42 +00:00
GlobalDCE
GlobalOpt Make sure that any new and optimized objects created during GlobalOPT copy all the attributes from the base object. 2016-01-22 21:18:20 +00:00
GVN Fix for two constant propagation problems in GVN with the assume intrinsic 2016-01-21 21:32:35 +00:00
IndVarSimplify [SCEV] Try to reuse existing value during SCEV expansion 2016-02-04 01:27:38 +00:00
InferFunctionAttrs
Inline Avoid inlining call sites in unreachable-terminated block 2016-02-01 20:55:11 +00:00
InstCombine [InstCombine] Revert r238452: Fold IntToPtr and PtrToInt into preceding loads. 2016-02-03 18:04:13 +00:00
InstMerge
InstSimplify [InstCombine] Simplify (x >> y) <= x 2016-01-21 18:55:54 +00:00
Internalize
IPConstantProp
IRCE [SCEV] Try to reuse existing value during SCEV expansion 2016-02-04 01:27:38 +00:00
JumpThreading [LVI] Introduce an intersect operation on lattice values 2016-02-02 03:15:40 +00:00
LCSSA
LICM [LICM] Keep metadata on control equivalent hoists 2016-01-28 15:51:58 +00:00
LoadCombine
LoopDeletion
LoopDistribute
LoopIdiom [LIR] Add support for structs and hand unrolled loops 2016-01-26 02:27:47 +00:00
LoopInterchange
LoopLoadElim [LoopLoadElim] Don't allow versioning when optForSize 2016-02-05 01:14:05 +00:00
LoopReroll Enable loopreroll to rerool loop with pointer induction variable. 2016-01-25 19:43:45 +00:00
LoopRotate
LoopSimplify
LoopSimplifyCFG Add LoopSimplifyCFG pass 2016-01-29 22:35:36 +00:00
LoopStrengthReduce [SCEV] Try to reuse existing value during SCEV expansion 2016-02-04 01:27:38 +00:00
LoopUnroll
LoopUnswitch
LoopVectorize [SCEV][LAA] Re-commit r260085 and r260086, this time with a fix for the memory 2016-02-08 17:02:45 +00:00
LoopVersioning [LoopVersioning] Expose loop versioning as a pass too 2016-02-03 00:06:10 +00:00
LoopVersioningLICM Corrected tests for Loop Versioning LICM, by adding “REQUIRES: asserts”. 2016-02-06 12:34:41 +00:00
LowerAtomic
LowerBitSets
LowerExpectIntrinsic
LowerInvoke
LowerSwitch
Mem2Reg
MemCpyOpt
MergeFunc
MetaRenamer
NaryReassociate
ObjCARC Add support for objc_unsafeClaimAutoreleasedReturnValue to the 2016-01-27 19:05:08 +00:00
PartiallyInlineLibCalls
PGOProfile [PGO] IR level instrumentation of indirect call value profiling 2016-01-21 18:11:44 +00:00
PhaseOrdering
PlaceSafepoints [PlaceSafepoints] Clamp NoStatepoints to true 2016-01-28 21:51:14 +00:00
PruneEH [PruneEH] Don't try to insert a terminator after another terminator 2016-01-23 06:00:44 +00:00
Reassociate Reassociate: Reprocess RedoInsts after each inst 2016-01-26 18:42:36 +00:00
Reg2Mem
RewriteStatepointsForGC [RS4GC] Remove unnecessary redirections from tests; NFC 2016-01-29 16:32:30 +00:00
SafeStack [safestack] Make sure the unsafe stack pointer is popped in all cases 2016-02-02 01:03:11 +00:00
SampleProfile
Scalarizer
ScalarRepl
SCCP
SeparateConstOffsetFromGEP
SimplifyCFG [SimplifyCFG] Fix for "endless" loop after dead code removal (Alternative to 2016-02-03 23:54:25 +00:00
Sink
SLPVectorizer Add test case missing from r259357 (NFC) 2016-02-01 19:09:24 +00:00
SpeculativeExecution
SROA [SROA] Also insert a bit piece expression if only one piece is needed 2016-01-14 20:06:34 +00:00
StraightLineStrengthReduce
StripDeadPrototypes
StripSymbols
StructurizeCFG AMDGPU: Replace some deprecated intrinsic uses in tests 2016-01-23 05:42:49 +00:00
TailCallElim Push isDereferenceableAndAlignedPointer down into isSafeToLoadUnconditionally 2016-01-17 12:35:29 +00:00
TailDup
Util Make check line consistent 2016-02-07 20:57:46 +00:00