[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