[llvm-commits] [llvm] r40912 - /llvm/trunk/lib/Transforms/Scalar/LoopIndexSplit.cpp

Devang Patel dpatel at apple.com
Tue Aug 7 16:17:53 PDT 2007


Author: dpatel
Date: Tue Aug  7 18:17:52 2007
New Revision: 40912

URL: http://llvm.org/viewvc/llvm-project?rev=40912&view=rev
Log:
Fix new compare instruction's signness. Caught by Chris during review.

Modified:
    llvm/trunk/lib/Transforms/Scalar/LoopIndexSplit.cpp

Modified: llvm/trunk/lib/Transforms/Scalar/LoopIndexSplit.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/LoopIndexSplit.cpp?rev=40912&r1=40911&r2=40912&view=diff

==============================================================================
--- llvm/trunk/lib/Transforms/Scalar/LoopIndexSplit.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/LoopIndexSplit.cpp Tue Aug  7 18:17:52 2007
@@ -13,8 +13,8 @@
 
 #define DEBUG_TYPE "loop-index-split"
 
-#include "llvm/Function.h"
 #include "llvm/Transforms/Scalar.h"
+#include "llvm/Function.h"
 #include "llvm/Analysis/LoopPass.h"
 #include "llvm/Analysis/ScalarEvolutionExpander.h"
 #include "llvm/Support/Compiler.h"
@@ -83,6 +83,9 @@
     
     // This compare instruction compares IndVar against SplitValue.
     ICmpInst *SplitCondition;
+
+    // Loop exit condition.
+    ICmpInst *ExitCondition;
   };
 
   char LoopIndexSplit::ID = 0;
@@ -228,7 +231,7 @@
   //      c1 = icmp uge i32 SplitValue, StartValue
   //      c2 = icmp ult i32 vSplitValue, ExitValue
   //      and i32 c1, c2 
-  bool SignedPredicate = SplitCondition->isSignedPredicate();
+  bool SignedPredicate = ExitCondition->isSignedPredicate();
   Instruction *C1 = new ICmpInst(SignedPredicate ? 
                                  ICmpInst::ICMP_SGE : ICmpInst::ICMP_UGE,
                                  SplitValue, StartValue, "lisplit", Terminator);
@@ -303,7 +306,6 @@
 // loop may not be eliminated. This is used by processOneIterationLoop().
 bool LoopIndexSplit::safeExitBlock(BasicBlock *ExitBlock) {
 
-  Instruction *ExitCondition = NULL;
   Instruction *IndVarIncrement = NULL;
       
   for (BasicBlock::iterator BI = ExitBlock->begin(), BE = ExitBlock->end();
@@ -339,11 +341,11 @@
     // I is an Exit condition if next instruction is block terminator.
     // Exit condition is OK if it compares loop invariant exit value,
     // which is checked below.
-    else if (isa<ICmpInst>(I)) {
+    else if (ICmpInst *EC = dyn_cast<ICmpInst>(I)) {
       ++BI;
       Instruction *N = BI;
       if (N == ExitBlock->getTerminator()) {
-        ExitCondition = I;
+        ExitCondition = EC;
         break;
       }
     }





More information about the llvm-commits mailing list