From: Andrew Trick Date: Mon, 26 Sep 2011 23:35:25 +0000 (+0000) Subject: LSR, one of the new Cost::isLoser() checks did not get merged in the previous checkin. X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=25b689e067697d3b49ae123120703fada030350f;p=oota-llvm.git LSR, one of the new Cost::isLoser() checks did not get merged in the previous checkin. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140583 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Transforms/Scalar/LoopStrengthReduce.cpp b/lib/Transforms/Scalar/LoopStrengthReduce.cpp index 1e5b56bc4e2..0ad9fc38411 100644 --- a/lib/Transforms/Scalar/LoopStrengthReduce.cpp +++ b/lib/Transforms/Scalar/LoopStrengthReduce.cpp @@ -745,9 +745,13 @@ void Cost::RateRegister(const SCEV *Reg, // Add the step value register, if it needs one. // TODO: The non-affine case isn't precisely modeled here. - if (!AR->isAffine() || !isa(AR->getOperand(1))) - if (!Regs.count(AR->getOperand(1))) + if (!AR->isAffine() || !isa(AR->getOperand(1))) { + if (!Regs.count(AR->getOperand(1))) { RateRegister(AR->getOperand(1), Regs, L, SE, DT); + if (isLoser()) + return; + } + } } ++NumRegs;