From: eopXD Date: Thu, 2 Jun 2022 03:39:38 +0000 (-0700) Subject: [LSR] Early exit for RateFormula when it is already losing. NFC X-Git-Tag: upstream/15.0.7~6101 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6eab5cade71459bc187eeeb364b9a94972c05696;p=platform%2Fupstream%2Fllvm.git [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 --- 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;