diff --git a/llvm/include/llvm/Transforms/Utils/UnrollLoop.h b/llvm/include/llvm/Transforms/Utils/UnrollLoop.h index 65fe8eff6442e..b4f2c59f3f694 100644 --- a/llvm/include/llvm/Transforms/Utils/UnrollLoop.h +++ b/llvm/include/llvm/Transforms/Utils/UnrollLoop.h @@ -100,7 +100,8 @@ bool isSafeToUnrollAndJam(Loop *L, ScalarEvolution &SE, DominatorTree &DT, DependenceInfo &DI, LoopInfo &LI); bool computeUnrollCount(Loop *L, const TargetTransformInfo &TTI, - DominatorTree &DT, LoopInfo *LI, ScalarEvolution &SE, + DominatorTree &DT, LoopInfo *LI, AssumptionCache *AC, + ScalarEvolution &SE, const SmallPtrSetImpl &EphValues, OptimizationRemarkEmitter *ORE, unsigned TripCount, unsigned MaxTripCount, bool MaxOrZero, diff --git a/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp b/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp index de2ac6e1f9561..a6b774441adb2 100644 --- a/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp +++ b/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp @@ -3251,7 +3251,7 @@ static int32_t computeHeuristicUnrollFactor(CanonicalLoopInfo *CLI) { unsigned TripMultiple = 0; bool UseUpperBound = false; - computeUnrollCount(L, TTI, DT, &LI, SE, EphValues, &ORE, TripCount, + computeUnrollCount(L, TTI, DT, &LI, &AC, SE, EphValues, &ORE, TripCount, MaxTripCount, MaxOrZero, TripMultiple, LoopSize, UP, PP, UseUpperBound); unsigned Factor = UP.Count; diff --git a/llvm/lib/Transforms/Scalar/LoopUnrollAndJamPass.cpp b/llvm/lib/Transforms/Scalar/LoopUnrollAndJamPass.cpp index 64fcdfa15aa91..81018d7de78ac 100644 --- a/llvm/lib/Transforms/Scalar/LoopUnrollAndJamPass.cpp +++ b/llvm/lib/Transforms/Scalar/LoopUnrollAndJamPass.cpp @@ -156,7 +156,7 @@ getUnrollAndJammedLoopSize(unsigned LoopSize, // unroll count was set explicitly. static bool computeUnrollAndJamCount( Loop *L, Loop *SubLoop, const TargetTransformInfo &TTI, DominatorTree &DT, - LoopInfo *LI, ScalarEvolution &SE, + LoopInfo *LI, AssumptionCache *AC, ScalarEvolution &SE, const SmallPtrSetImpl &EphValues, OptimizationRemarkEmitter *ORE, unsigned OuterTripCount, unsigned OuterTripMultiple, unsigned OuterLoopSize, unsigned InnerTripCount, @@ -170,7 +170,7 @@ static bool computeUnrollAndJamCount( unsigned MaxTripCount = 0; bool UseUpperBound = false; bool ExplicitUnroll = computeUnrollCount( - L, TTI, DT, LI, SE, EphValues, ORE, OuterTripCount, MaxTripCount, + L, TTI, DT, LI, AC, SE, EphValues, ORE, OuterTripCount, MaxTripCount, /*MaxOrZero*/ false, OuterTripMultiple, OuterLoopSize, UP, PP, UseUpperBound); if (ExplicitUnroll || UseUpperBound) { @@ -384,7 +384,7 @@ tryToUnrollAndJamLoop(Loop *L, DominatorTree &DT, LoopInfo *LI, // Decide if, and by how much, to unroll bool IsCountSetExplicitly = computeUnrollAndJamCount( - L, SubLoop, TTI, DT, LI, SE, EphValues, &ORE, OuterTripCount, + L, SubLoop, TTI, DT, LI, &AC, SE, EphValues, &ORE, OuterTripCount, OuterTripMultiple, OuterLoopSize, InnerTripCount, InnerLoopSize, UP, PP); if (UP.Count <= 1) return LoopUnrollResult::Unmodified; diff --git a/llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp b/llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp index 21c00881ae2e5..aef67bf486c57 100644 --- a/llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp +++ b/llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp @@ -888,6 +888,7 @@ shouldPartialUnroll(const unsigned LoopSize, const unsigned TripCount, // refactored into it own function. bool llvm::computeUnrollCount( Loop *L, const TargetTransformInfo &TTI, DominatorTree &DT, LoopInfo *LI, + AssumptionCache *AC, ScalarEvolution &SE, const SmallPtrSetImpl &EphValues, OptimizationRemarkEmitter *ORE, unsigned TripCount, unsigned MaxTripCount, bool MaxOrZero, unsigned TripMultiple, unsigned LoopSize, @@ -978,7 +979,7 @@ bool llvm::computeUnrollCount( } // 5th priority is loop peeling. - computePeelCount(L, LoopSize, PP, TripCount, DT, SE, UP.Threshold); + computePeelCount(L, LoopSize, PP, TripCount, DT, SE, AC, UP.Threshold); if (PP.PeelCount) { UP.Runtime = false; UP.Count = 1; @@ -1272,7 +1273,7 @@ static LoopUnrollResult tryToUnrollLoop( // fully unroll the loop. bool UseUpperBound = false; bool IsCountSetExplicitly = computeUnrollCount( - L, TTI, DT, LI, SE, EphValues, &ORE, TripCount, MaxTripCount, MaxOrZero, + L, TTI, DT, LI, &AC, SE, EphValues, &ORE, TripCount, MaxTripCount, MaxOrZero, TripMultiple, LoopSize, UP, PP, UseUpperBound); if (!UP.Count) return LoopUnrollResult::Unmodified;