From: Michael Zolotukhin Date: Mon, 26 May 2014 14:49:46 +0000 (+0000) Subject: Some cleanup for r209568. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=90e79a50bb0d198edb226cccc338fe4333466b5e;p=oota-llvm.git Some cleanup for r209568. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209634 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Analysis/ScalarEvolution.cpp b/lib/Analysis/ScalarEvolution.cpp index 461fdac3c6c..1087e5df163 100644 --- a/lib/Analysis/ScalarEvolution.cpp +++ b/lib/Analysis/ScalarEvolution.cpp @@ -1208,11 +1208,10 @@ const SCEV *ScalarEvolution::getSignExtendExpr(const SCEV *Op, auto SMul = dyn_cast(SA->getOperand(1)); if (SMul && SC1) { if (auto SC2 = dyn_cast(SMul->getOperand(0))) { - APInt C1 = SC1->getValue()->getValue(); - APInt C2 = SC2->getValue()->getValue(); - APInt CDiff = C2 - C1; + const APInt &C1 = SC1->getValue()->getValue(); + const APInt &C2 = SC2->getValue()->getValue(); if (C1.isStrictlyPositive() && C2.isStrictlyPositive() && - CDiff.isStrictlyPositive() && C2.isPowerOf2()) + C2.ugt(C1) && C2.isPowerOf2()) return getAddExpr(getSignExtendExpr(SC1, Ty), getSignExtendExpr(SMul, Ty)); } @@ -1316,11 +1315,10 @@ const SCEV *ScalarEvolution::getSignExtendExpr(const SCEV *Op, auto SC1 = dyn_cast(Start); auto SC2 = dyn_cast(Step); if (SC1 && SC2) { - APInt C1 = SC1->getValue()->getValue(); - APInt C2 = SC2->getValue()->getValue(); - APInt CDiff = C2 - C1; - if (C1.isStrictlyPositive() && C2.isStrictlyPositive() && - CDiff.isStrictlyPositive() && C2.isPowerOf2()) { + const APInt &C1 = SC1->getValue()->getValue(); + const APInt &C2 = SC2->getValue()->getValue(); + if (C1.isStrictlyPositive() && C2.isStrictlyPositive() && C2.ugt(C1) && + C2.isPowerOf2()) { Start = getSignExtendExpr(Start, Ty); const SCEV *NewAR = getAddRecExpr(getConstant(AR->getType(), 0), Step, L, AR->getNoWrapFlags());