From: Chris Lattner Date: Wed, 10 Mar 2004 21:42:19 +0000 (+0000) Subject: Fix PR284: [indvars] Induction variable analysis violates LLVM invariants X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=c6b0c4b9e2ba2b86a5ec96f76fcf1f0f281f12a6;p=oota-llvm.git Fix PR284: [indvars] Induction variable analysis violates LLVM invariants git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12275 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Analysis/InductionVariable.cpp b/lib/Analysis/InductionVariable.cpp index b6025294948..8f622973f96 100644 --- a/lib/Analysis/InductionVariable.cpp +++ b/lib/Analysis/InductionVariable.cpp @@ -136,10 +136,14 @@ InductionVariable::InductionVariable(PHINode *P, LoopInfo *LoopInfo): End(0) { if (Constant *CV = dyn_cast(V)) Step = ConstantExpr::get(Instruction::Sub, Zero, CV); else if (Instruction *I = dyn_cast(V)) { + BasicBlock::iterator InsertPt = I; + for (++InsertPt; isa(InsertPt); ++InsertPt) + /*empty*/; Step = BinaryOperator::create(Instruction::Sub, Zero, V, - V->getName()+".neg", I->getNext()); + V->getName()+".neg", InsertPt); } else { + // Must be loop invariant Step = BinaryOperator::create(Instruction::Sub, Zero, V, V->getName()+".neg", Phi->getParent()->getParent()->begin()->begin());