diff options
author | Dan Gohman <gohman@apple.com> | 2010-07-20 16:46:58 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2010-07-20 16:46:58 +0000 |
commit | 31158756e4a9c9ac98a47bd0ccdadfc405fcdbaf (patch) | |
tree | f91b2640f7e40f7454b7e715312639b2cb283315 /llvm/lib/Analysis/ScalarEvolutionExpander.cpp | |
parent | 4fd92434f112fe5ad492df782fe163df3e7aa558 (diff) | |
download | bcm5719-llvm-31158756e4a9c9ac98a47bd0ccdadfc405fcdbaf.tar.gz bcm5719-llvm-31158756e4a9c9ac98a47bd0ccdadfc405fcdbaf.zip |
Simplify this code; LoopInfo::getCanonicalInductionVariable will only
find integer induction variables.
llvm-svn: 108853
Diffstat (limited to 'llvm/lib/Analysis/ScalarEvolutionExpander.cpp')
-rw-r--r-- | llvm/lib/Analysis/ScalarEvolutionExpander.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/llvm/lib/Analysis/ScalarEvolutionExpander.cpp b/llvm/lib/Analysis/ScalarEvolutionExpander.cpp index 6017c51fc63..397a3b72073 100644 --- a/llvm/lib/Analysis/ScalarEvolutionExpander.cpp +++ b/llvm/lib/Analysis/ScalarEvolutionExpander.cpp @@ -1059,9 +1059,7 @@ Value *SCEVExpander::visitAddRecExpr(const SCEVAddRecExpr *S) { // First check for an existing canonical IV in a suitable type. PHINode *CanonicalIV = 0; if (PHINode *PN = L->getCanonicalInductionVariable()) - if (SE.isSCEVable(PN->getType()) && - SE.getEffectiveSCEVType(PN->getType())->isIntegerTy() && - SE.getTypeSizeInBits(PN->getType()) >= SE.getTypeSizeInBits(Ty)) + if (SE.getTypeSizeInBits(PN->getType()) >= SE.getTypeSizeInBits(Ty)) CanonicalIV = PN; // Rewrite an AddRec in terms of the canonical induction variable, if @@ -1353,12 +1351,17 @@ PHINode * SCEVExpander::getOrInsertCanonicalInductionVariable(const Loop *L, const Type *Ty) { assert(Ty->isIntegerTy() && "Can only insert integer induction variables!"); + + // Build a SCEV for {0,+,1}<L>. const SCEV *H = SE.getAddRecExpr(SE.getConstant(Ty, 0), SE.getConstant(Ty, 1), L); + + // Emit code for it. BasicBlock *SaveInsertBB = Builder.GetInsertBlock(); BasicBlock::iterator SaveInsertPt = Builder.GetInsertPoint(); PHINode *V = cast<PHINode>(expandCodeFor(H, 0, L->getHeader()->begin())); if (SaveInsertBB) restoreInsertPoint(SaveInsertBB, SaveInsertPt); + return V; } |