[llvm] r243466 - [Unroll] Don't analyze blocks outside the loop.

Michael Zolotukhin mzolotukhin at apple.com
Tue Jul 28 12:21:21 PDT 2015


Author: mzolotukhin
Date: Tue Jul 28 14:21:21 2015
New Revision: 243466

URL: http://llvm.org/viewvc/llvm-project?rev=243466&view=rev
Log:
[Unroll] Don't analyze blocks outside the loop.

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

Modified: llvm/trunk/lib/Transforms/Scalar/LoopUnrollPass.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/LoopUnrollPass.cpp?rev=243466&r1=243465&r2=243466&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Scalar/LoopUnrollPass.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/LoopUnrollPass.cpp Tue Jul 28 14:21:21 2015
@@ -586,16 +586,20 @@ analyzeLoopUnrollCost(const Loop *L, uns
         if (BI->isConditional()) {
           if (Constant *SimpleCond =
                   SimplifiedValues.lookup(BI->getCondition())) {
-            BBWorklist.insert(BI->getSuccessor(
-                cast<ConstantInt>(SimpleCond)->isZero() ? 1 : 0));
+            BasicBlock *Succ = BI->getSuccessor(
+                cast<ConstantInt>(SimpleCond)->isZero() ? 1 : 0);
+            if (L->contains(Succ))
+              BBWorklist.insert(Succ);
             continue;
           }
         }
       } else if (SwitchInst *SI = dyn_cast<SwitchInst>(TI)) {
         if (Constant *SimpleCond =
                 SimplifiedValues.lookup(SI->getCondition())) {
-          BBWorklist.insert(
-              SI->getSuccessor(cast<ConstantInt>(SimpleCond)->getSExtValue()));
+          BasicBlock *Succ =
+              SI->getSuccessor(cast<ConstantInt>(SimpleCond)->getSExtValue());
+          if (L->contains(Succ))
+            BBWorklist.insert(Succ);
           continue;
         }
       }





More information about the llvm-commits mailing list