Fix PR 4086, a bug in FP IV elimination.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70247 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Dale Johannesen 2009-04-27 21:03:15 +00:00
parent c45288e06b
commit 617d108a63
2 changed files with 22 additions and 2 deletions

View File

@ -1037,9 +1037,11 @@ void IndVarSimplify::HandleFloatingPointIV(Loop *L, PHINode *PH,
Incr->getName()+".int", Incr);
NewPHI->addIncoming(NewAdd, PH->getIncomingBlock(BackEdge));
// The back edge is edge 1 of newPHI, whatever it may have been in the
// original PHI.
ConstantInt *NewEV = ConstantInt::get(Type::Int32Ty, intEV);
Value *LHS = (EVIndex == 1 ? NewPHI->getIncomingValue(BackEdge) : NewEV);
Value *RHS = (EVIndex == 1 ? NewEV : NewPHI->getIncomingValue(BackEdge));
Value *LHS = (EVIndex == 1 ? NewPHI->getIncomingValue(1) : NewEV);
Value *RHS = (EVIndex == 1 ? NewEV : NewPHI->getIncomingValue(1));
ICmpInst *NewEC = new ICmpInst(NewPred, LHS, RHS, EC->getNameStart(),
EC->getParent()->getTerminator());

View File

@ -0,0 +1,18 @@
; RUN: llvm-as < %s | opt -indvars | llvm-dis | grep icmp | grep next
; PR4086
declare void @foo()
define void @test() {
entry:
br label %loop_body
loop_body:
%i = phi float [ %nexti, %loop_body ], [ 0.0, %entry ]
tail call void @foo()
%nexti = add float %i, 1.0
%less = fcmp olt float %nexti, 2.0
br i1 %less, label %loop_body, label %done
done:
ret void
}