From 90e79a50bb0d198edb226cccc338fe4333466b5e Mon Sep 17 00:00:00 2001 From: Michael Zolotukhin Date: Mon, 26 May 2014 14:49:46 +0000 Subject: Some cleanup for r209568. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209634 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Analysis/ScalarEvolution.cpp | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) (limited to 'lib/Analysis') diff --git a/lib/Analysis/ScalarEvolution.cpp b/lib/Analysis/ScalarEvolution.cpp index 461fdac3c6..1087e5df16 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()); -- cgit v1.2.3