OSDN Git Service

add a comment, make a check more lenient
authorChris Lattner <sabre@nondot.org>
Tue, 2 Aug 2005 02:52:02 +0000 (02:52 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 2 Aug 2005 02:52:02 +0000 (02:52 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22581 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/LoopStrengthReduce.cpp

index a39ba6e..fcb7ad3 100644 (file)
@@ -71,6 +71,9 @@ namespace {
     const TargetData *TD;
     const Type *UIntPtrTy;
     bool Changed;
+
+    /// MaxTargetAMSize - This is the maximum power-of-two scale value that the
+    /// target can handle for free with its addressing modes.
     unsigned MaxTargetAMSize;
 
     /// IVUsesByStride - Keep track of all uses of induction variables that we
@@ -649,15 +652,14 @@ void LoopStrengthReduce::runOnLoop(Loop *L) {
       // compared against some value to decide loop termination.
       if (PN->hasOneUse()) {
         BinaryOperator *BO = dyn_cast<BinaryOperator>(*(PN->use_begin()));
-        if (BO && BO->getOpcode() == Instruction::Add)
-          if (BO->hasOneUse()) {
-            if (PN == dyn_cast<PHINode>(*(BO->use_begin()))) {
-              DeadInsts.insert(BO);
-              // Break the cycle, then delete the PHI.
-              PN->replaceAllUsesWith(UndefValue::get(PN->getType()));
-              PN->eraseFromParent();
-            }
+        if (BO && BO->hasOneUse()) {
+          if (PN == *(BO->use_begin())) {
+            DeadInsts.insert(BO);
+            // Break the cycle, then delete the PHI.
+            PN->replaceAllUsesWith(UndefValue::get(PN->getType()));
+            PN->eraseFromParent();
           }
+        }
       }
     }
     DeleteTriviallyDeadInstructions(DeadInsts);