diff options
Diffstat (limited to 'llvm/lib/Analysis/LoopAccessAnalysis.cpp')
-rw-r--r-- | llvm/lib/Analysis/LoopAccessAnalysis.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/llvm/lib/Analysis/LoopAccessAnalysis.cpp b/llvm/lib/Analysis/LoopAccessAnalysis.cpp index c2cdd3c..351e090 100644 --- a/llvm/lib/Analysis/LoopAccessAnalysis.cpp +++ b/llvm/lib/Analysis/LoopAccessAnalysis.cpp @@ -137,6 +137,11 @@ static cl::opt<unsigned> MaxForkedSCEVDepth( cl::desc("Maximum recursion depth when finding forked SCEVs (default = 5)"), cl::init(5)); +static cl::opt<bool> SpeculateUnitStride( + "laa-speculate-unit-stride", cl::Hidden, + cl::desc("Speculate that non-constant strides are unit in LAA"), + cl::init(true)); + bool VectorizerParams::isInterleaveForced() { return ::VectorizationInterleave.getNumOccurrences() > 0; } @@ -2694,6 +2699,11 @@ void LoopAccessInfo::collectStridedAccess(Value *MemAccess) { "versioning:"); LLVM_DEBUG(dbgs() << " Ptr: " << *Ptr << " Stride: " << *Stride << "\n"); + if (!SpeculateUnitStride) { + LLVM_DEBUG(dbgs() << " Chose not to due to -laa-speculate-unit-stride\n"); + return; + } + // Avoid adding the "Stride == 1" predicate when we know that // Stride >= Trip-Count. Such a predicate will effectively optimize a single // or zero iteration loop, as Trip-Count <= Stride == 1. |