From cd3eb9b09882087761c811d349c2b3be4e5c8a34 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Sat, 14 Feb 2009 02:25:19 +0000 Subject: [PATCH] Simplify some code. hasComputableLoopEvolution is overkill in this case. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64530 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Transforms/Scalar/IndVarSimplify.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/lib/Transforms/Scalar/IndVarSimplify.cpp b/lib/Transforms/Scalar/IndVarSimplify.cpp index ccd25d8fb50..23850516787 100644 --- a/lib/Transforms/Scalar/IndVarSimplify.cpp +++ b/lib/Transforms/Scalar/IndVarSimplify.cpp @@ -551,15 +551,14 @@ bool IndVarSimplify::runOnLoop(Loop *L, LPPassManager &LPM) { PHINode *PN = cast(I); if (PN->getType()->isInteger()) { // FIXME: when we have fast-math, enable! SCEVHandle SCEV = SE->getSCEV(PN); - if (SCEV->hasComputableLoopEvolution(L)) - // FIXME: It is an extremely bad idea to indvar substitute anything more - // complex than affine induction variables. Doing so will put expensive - // polynomial evaluations inside of the loop, and the str reduction pass - // currently can only reduce affine polynomials. For now just disable - // indvar subst on anything more complex than an affine addrec. - if (SCEVAddRecExpr *AR = dyn_cast(SCEV)) - if (AR->isAffine()) - IndVars.push_back(std::make_pair(PN, SCEV)); + // FIXME: It is an extremely bad idea to indvar substitute anything more + // complex than affine induction variables. Doing so will put expensive + // polynomial evaluations inside of the loop, and the str reduction pass + // currently can only reduce affine polynomials. For now just disable + // indvar subst on anything more complex than an affine addrec. + if (SCEVAddRecExpr *AR = dyn_cast(SCEV)) + if (AR->getLoop() == L && AR->isAffine()) + IndVars.push_back(std::make_pair(PN, SCEV)); } }