diff --git a/lib/Transforms/Vectorize/LoopVectorize.cpp b/lib/Transforms/Vectorize/LoopVectorize.cpp index 2b2467746f1..a5eedc9ff05 100644 --- a/lib/Transforms/Vectorize/LoopVectorize.cpp +++ b/lib/Transforms/Vectorize/LoopVectorize.cpp @@ -1448,6 +1448,8 @@ private: emitAnalysisDiag(TheFunction, TheLoop, *Hints, Message); } + ValueToValueMap &getSymbolicStrides() { return SymbolicStrides; } + unsigned NumPredStores; /// The loop that we evaluate. @@ -1508,7 +1510,7 @@ private: /// Used to emit an analysis of any legality issues. LoopVectorizeHints *Hints; - ValueToValueMap Strides; + ValueToValueMap SymbolicStrides; SmallPtrSet StrideSet; /// While vectorizing these instructions we have to generate a @@ -2220,7 +2222,7 @@ int LoopVectorizationLegality::isConsecutivePtr(Value *Ptr) { // We can emit wide load/stores only if the last non-zero index is the // induction variable. const SCEV *Last = nullptr; - if (!Strides.count(Gep)) + if (!getSymbolicStrides().count(Gep)) Last = PSE.getSCEV(Gep->getOperand(InductionOperand)); else { // Because of the multiplication by a stride we can have a s/zext cast. @@ -2232,7 +2234,7 @@ int LoopVectorizationLegality::isConsecutivePtr(Value *Ptr) { // %idxprom = zext i32 %mul to i64 << Safe cast. // %arrayidx = getelementptr inbounds i32* %B, i64 %idxprom // - Last = replaceSymbolicStrideSCEV(PSE, Strides, + Last = replaceSymbolicStrideSCEV(PSE, getSymbolicStrides(), Gep->getOperand(InductionOperand), Gep); if (const SCEVCastExpr *C = dyn_cast(Last)) Last = @@ -4663,7 +4665,7 @@ bool LoopVectorizationLegality::canVectorize() { // Analyze interleaved memory accesses. if (UseInterleaved) - InterleaveInfo.analyzeInterleaving(Strides); + InterleaveInfo.analyzeInterleaving(getSymbolicStrides()); unsigned SCEVThreshold = VectorizeSCEVCheckThreshold; if (Hints->getForce() == LoopVectorizeHints::FK_Enabled) @@ -4952,7 +4954,7 @@ void LoopVectorizationLegality::collectStridedAccess(Value *MemAccess) { DEBUG(dbgs() << "LV: Found a strided access that we can version"); DEBUG(dbgs() << " Ptr: " << *Ptr << " Stride: " << *Stride << "\n"); - Strides[Ptr] = Stride; + SymbolicStrides[Ptr] = Stride; StrideSet.insert(Stride); } @@ -4994,7 +4996,7 @@ void LoopVectorizationLegality::collectLoopUniforms() { } bool LoopVectorizationLegality::canVectorizeMemory() { - LAI = &LAA->getInfo(TheLoop, Strides); + LAI = &LAA->getInfo(TheLoop, getSymbolicStrides()); auto &OptionalReport = LAI->getReport(); if (OptionalReport) emitAnalysis(VectorizationReport(*OptionalReport));