[llvm-commits] [llvm] r70247 - in /llvm/trunk: lib/Transforms/Scalar/IndVarSimplify.cpp test/Transforms/IndVarSimplify/2009-04-27-Floating.ll
Dale Johannesen
dalej at apple.com
Mon Apr 27 14:03:15 PDT 2009
Author: johannes
Date: Mon Apr 27 16:03:15 2009
New Revision: 70247
URL: http://llvm.org/viewvc/llvm-project?rev=70247&view=rev
Log:
Fix PR 4086, a bug in FP IV elimination.
Added:
llvm/trunk/test/Transforms/IndVarSimplify/2009-04-27-Floating.ll
Modified:
llvm/trunk/lib/Transforms/Scalar/IndVarSimplify.cpp
Modified: llvm/trunk/lib/Transforms/Scalar/IndVarSimplify.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/IndVarSimplify.cpp?rev=70247&r1=70246&r2=70247&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Scalar/IndVarSimplify.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/IndVarSimplify.cpp Mon Apr 27 16:03:15 2009
@@ -1037,9 +1037,11 @@
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());
Added: llvm/trunk/test/Transforms/IndVarSimplify/2009-04-27-Floating.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/IndVarSimplify/2009-04-27-Floating.ll?rev=70247&view=auto
==============================================================================
--- llvm/trunk/test/Transforms/IndVarSimplify/2009-04-27-Floating.ll (added)
+++ llvm/trunk/test/Transforms/IndVarSimplify/2009-04-27-Floating.ll Mon Apr 27 16:03:15 2009
@@ -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
+}
More information about the llvm-commits
mailing list