diff --git a/include/llvm/Analysis/ScalarEvolution.h b/include/llvm/Analysis/ScalarEvolution.h index 017778b542f..ec9773a2ee9 100644 --- a/include/llvm/Analysis/ScalarEvolution.h +++ b/include/llvm/Analysis/ScalarEvolution.h @@ -1746,9 +1746,10 @@ private: const SCEV *computeBECount(const SCEV *Delta, const SCEV *Stride, bool Equality); - // Compute the maximum backedge count based on the range of values - // permitted by Start, End, and Stride. - const SCEV *computeMaxBECount(const SCEV *Start, const SCEV *Stride, + /// Compute the maximum backedge count based on the range of values + /// permitted by Start, End, and Stride. This is for loops of the form + /// {Start, +, Stride} LT End. + const SCEV *computeMaxBECountForLT(const SCEV *Start, const SCEV *Stride, const SCEV *End, unsigned BitWidth, bool IsSigned); diff --git a/lib/Analysis/ScalarEvolution.cpp b/lib/Analysis/ScalarEvolution.cpp index f5f569cf9e4..6ef11cb07c4 100644 --- a/lib/Analysis/ScalarEvolution.cpp +++ b/lib/Analysis/ScalarEvolution.cpp @@ -9725,11 +9725,11 @@ const SCEV *ScalarEvolution::computeBECount(const SCEV *Delta, const SCEV *Step, return getUDivExpr(Delta, Step); } -const SCEV *ScalarEvolution::computeMaxBECount(const SCEV *Start, - const SCEV *Stride, - const SCEV *End, - unsigned BitWidth, - bool IsSigned) { +const SCEV *ScalarEvolution::computeMaxBECountForLT(const SCEV *Start, + const SCEV *Stride, + const SCEV *End, + unsigned BitWidth, + bool IsSigned) { assert(!isKnownNonPositive(Stride) && "Stride is expected strictly positive!"); @@ -9861,7 +9861,7 @@ ScalarEvolution::howManyLessThans(const SCEV *LHS, const SCEV *RHS, // bound of the loop (RHS), and the fact that IV does not overflow (which is // checked above). if (!isLoopInvariant(RHS, L)) { - const SCEV *MaxBECount = computeMaxBECount( + const SCEV *MaxBECount = computeMaxBECountForLT( Start, Stride, RHS, getTypeSizeInBits(LHS->getType()), IsSigned); return ExitLimit(getCouldNotCompute() /* ExactNotTaken */, MaxBECount, false /*MaxOrZero*/, Predicates); @@ -9898,8 +9898,8 @@ ScalarEvolution::howManyLessThans(const SCEV *LHS, const SCEV *RHS, MaxBECount = BECountIfBackedgeTaken; MaxOrZero = true; } else { - MaxBECount = computeMaxBECount(Start, Stride, RHS, - getTypeSizeInBits(LHS->getType()), IsSigned); + MaxBECount = computeMaxBECountForLT( + Start, Stride, RHS, getTypeSizeInBits(LHS->getType()), IsSigned); } if (isa(MaxBECount) &&