From 6eab5cade71459bc187eeeb364b9a94972c05696 Mon Sep 17 00:00:00 2001 From: eopXD Date: Wed, 1 Jun 2022 20:39:38 -0700 Subject: [PATCH] [LSR] Early exit for RateFormula when it is already losing. NFC This patch does not effect any behavior of the current code. The codebase implicitly implies that `Cost::RateFormula` is only called when the `Cost` is not in losing status, or else there may be possible to trigger the assertion of `Cost::isValid`. The intention here is to prevent mis-use where future development allow `Cost` that is already loser to call `Cost::RateFormula` - Early exit when `Cost` is already losing. Reviewed By: Meinersbur, #loopoptwg Differential Revision: https://reviews.llvm.org/D125670 --- llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp b/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp index e53dea5..f0a5f94 100644 --- a/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp +++ b/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp @@ -1355,6 +1355,8 @@ void Cost::RateFormula(const Formula &F, const DenseSet &VisitedRegs, const LSRUse &LU, SmallPtrSetImpl *LoserRegs) { + if (isLoser()) + return; assert(F.isCanonical(*L) && "Cost is accurate only for canonical formula"); // Tally up the registers. unsigned PrevAddRecCost = C.AddRecCost; -- 2.7.4