improve comment and drop a dead check. If PH had
authorChris Lattner <sabre@nondot.org>
Sat, 3 Apr 2010 06:16:22 +0000 (06:16 +0000)
committerChris Lattner <sabre@nondot.org>
Sat, 3 Apr 2010 06:16:22 +0000 (06:16 +0000)
no uses, it would have been deleted by
RecursivelyDeleteTriviallyDeadInstructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100275 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/IndVarSimplify.cpp

index b5fdd0c4a17ab366369d8319f2ff2f373c903660..650231b8e5cf91fb1c7b20c5eb4b1c2f04ae25dc 100644 (file)
@@ -759,10 +759,14 @@ void IndVarSimplify::HandleFloatingPointIV(Loop *L, PHINode *PH) {
   Incr->replaceAllUsesWith(UndefValue::get(Incr->getType()));
   RecursivelyDeleteTriviallyDeadInstructions(Incr);
 
-  // Replace floating induction variable, if it isn't already deleted.
-  // Give SIToFPInst preference over UIToFPInst because it is faster on
-  // platforms that are widely used.
-  if (WeakPH && !PH->use_empty()) {
+  // If the FP induction variable still has uses, this is because something else
+  // in the loop uses its value.  In order to canonicalize the induction
+  // variable, we chose to eliminate the IV and rewrite it in terms of an
+  // int->fp cast.
+  //
+  // 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, PH->getType(), "indvar.conv",
                                         PH->getParent()->getFirstNonPHI());