summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms
diff options
context:
space:
mode:
authorMichael Zolotukhin <mzolotukhin@apple.com>2015-07-28 19:21:21 +0000
committerMichael Zolotukhin <mzolotukhin@apple.com>2015-07-28 19:21:21 +0000
commita425c9d0e3eeb301762bc54efb8254b0d573d8c7 (patch)
treea8cdd56ec5255c2c733645f52b530e83a6afc49e /llvm/lib/Transforms
parentd20aba70476da4890901ec39951be3154fb03b2f (diff)
downloadbcm5719-llvm-a425c9d0e3eeb301762bc54efb8254b0d573d8c7.tar.gz
bcm5719-llvm-a425c9d0e3eeb301762bc54efb8254b0d573d8c7.zip
[Unroll] Don't analyze blocks outside the loop.
llvm-svn: 243466
Diffstat (limited to 'llvm/lib/Transforms')
-rw-r--r--llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp b/llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp
index 89b3d47c88f..513c5a4dc51 100644
--- a/llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp
+++ b/llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp
@@ -586,16 +586,20 @@ analyzeLoopUnrollCost(const Loop *L, unsigned TripCount, ScalarEvolution &SE,
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;
}
}
OpenPOWER on IntegriCloud