diff options
Diffstat (limited to 'lib/Analysis/InductionVariable.cpp')
-rw-r--r-- | lib/Analysis/InductionVariable.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/lib/Analysis/InductionVariable.cpp b/lib/Analysis/InductionVariable.cpp index a340a77196..d88c9cfc68 100644 --- a/lib/Analysis/InductionVariable.cpp +++ b/lib/Analysis/InductionVariable.cpp @@ -69,6 +69,10 @@ InductionVariable::InductionVariable(PHINode *P, cfg::LoopInfo *LoopInfo) { // if (Phi->getNumIncomingValues() != 2) return; + // FIXME: Handle FP induction variables. + if (Phi->getType() == Type::FloatTy || Phi->getType() == Type::DoubleTy) + return; + // If we have loop information, make sure that this PHI node is in the header // of a loop... // @@ -140,11 +144,10 @@ InductionVariable::InductionVariable(PHINode *P, cfg::LoopInfo *LoopInfo) { Step = (Value*)StepE.Offset; else Step = Constant::getNullConstant(Step->getType()); + const Type *ETy = Phi->getType(); + if (ETy->isPointerType()) ETy = Type::ULongTy; + Step = (Value*)(StepE.Offset ? StepE.Offset : ConstantInt::get(ETy,0)); } - - const Type *ETy = Phi->getType(); - if (ETy->isPointerType()) ETy = Type::ULongTy; - Step = (Value*)(StepE.Offset ? StepE.Offset : ConstantInt::get(ETy, 0)); } } |