[Unroll] Don't analyze blocks outside the loop.
llvm-svn: 243466
diff --git a/llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp b/llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp
index 89b3d47..513c5a4 100644
--- a/llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp
+++ b/llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp
@@ -586,16 +586,20 @@
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;
}
}