[llvm-commits] [llvm] r100280 - /llvm/trunk/lib/Transforms/Scalar/IndVarSimplify.cpp

Chris Lattner sabre at nondot.org
Fri Apr 2 23:25:21 PDT 2010


Author: lattner
Date: Sat Apr  3 01:25:21 2010
New Revision: 100280

URL: http://llvm.org/viewvc/llvm-project?rev=100280&view=rev
Log:
just eliminate the uitofp checks.  This code isn't doing
the required validity checks in the first place, and supporting
a condition large enough to require the 32'nd bit isn't worth it.

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=100280&r1=100279&r2=100280&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Scalar/IndVarSimplify.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/IndVarSimplify.cpp Sat Apr  3 01:25:21 2010
@@ -623,21 +623,6 @@
   }
 }
 
-/// Return true if it is OK to use SIToFPInst for an induction variable
-/// with given initial and exit values.
-static bool CanUseSIToFP(ConstantFP *InitV, ConstantFP *ExitV,
-                         uint64_t intIV, uint64_t intEV) {
-
-  if (InitV->getValueAPF().isNegative() || ExitV->getValueAPF().isNegative())
-    return true;
-
-  // If the iteration range can be handled by SIToFPInst then use it.
-  if (abs64(intEV - intIV) < INT32_MAX)
-    return true;
-
-  return false;
-}
-
 /// convertToInt - Convert APF to an integer, if possible.
 static bool convertToInt(const APFloat &APF, uint64_t &intVal) {
   bool isExact = false;
@@ -720,9 +705,9 @@
   case CmpInst::FCMP_OEQ:
   case CmpInst::FCMP_UEQ: NewPred = CmpInst::ICMP_EQ; break;
   case CmpInst::FCMP_OGT:
-  case CmpInst::FCMP_UGT: NewPred = CmpInst::ICMP_UGT; break;
+  case CmpInst::FCMP_UGT: NewPred = CmpInst::ICMP_SGT; break;
   case CmpInst::FCMP_OGE:
-  case CmpInst::FCMP_UGE: NewPred = CmpInst::ICMP_UGE; break;
+  case CmpInst::FCMP_UGE: NewPred = CmpInst::ICMP_SGE; break;
   case CmpInst::FCMP_OLT:
   case CmpInst::FCMP_ULT: NewPred = CmpInst::ICMP_ULT; break;
   case CmpInst::FCMP_OLE:
@@ -767,15 +752,9 @@
   // We give preference to sitofp over uitofp because it is faster on most
   // platforms.
   if (WeakPH) {
-    if (CanUseSIToFP(InitValueVal, ExitValueVal, InitValue, ExitValue)) {
-      SIToFPInst *Conv = new SIToFPInst(NewPHI, PN->getType(), "indvar.conv",
-                                        PN->getParent()->getFirstNonPHI());
-      PN->replaceAllUsesWith(Conv);
-    } else {
-      UIToFPInst *Conv = new UIToFPInst(NewPHI, PN->getType(), "indvar.conv",
-                                        PN->getParent()->getFirstNonPHI());
-      PN->replaceAllUsesWith(Conv);
-    }
+    Value *Conv = new SIToFPInst(NewPHI, PN->getType(), "indvar.conv",
+                                 PN->getParent()->getFirstNonPHI());
+    PN->replaceAllUsesWith(Conv);
     RecursivelyDeleteTriviallyDeadInstructions(PN);
   }
 





More information about the llvm-commits mailing list