summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Zolotukhin <mzolotukhin@apple.com>2016-04-07 00:09:42 +0000
committerMichael Zolotukhin <mzolotukhin@apple.com>2016-04-07 00:09:42 +0000
commit56ad4048ae7d0830422e8ef6a9cf3599bc16fa60 (patch)
treeecab62009d04eb0dce2a39295ef8c90860640040
parent4359784c1ba01d6722454cf2d10db6f4a94ccf41 (diff)
downloadbcm5719-llvm-56ad4048ae7d0830422e8ef6a9cf3599bc16fa60.tar.gz
bcm5719-llvm-56ad4048ae7d0830422e8ef6a9cf3599bc16fa60.zip
Follow-up for r265605: don't mutate vector we're iterating.
llvm-svn: 265625
-rw-r--r--llvm/lib/Transforms/Utils/LoopUnroll.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/llvm/lib/Transforms/Utils/LoopUnroll.cpp b/llvm/lib/Transforms/Utils/LoopUnroll.cpp
index e9840424354..10223c31bc1 100644
--- a/llvm/lib/Transforms/Utils/LoopUnroll.cpp
+++ b/llvm/lib/Transforms/Utils/LoopUnroll.cpp
@@ -563,13 +563,15 @@ bool llvm::UnrollLoop(Loop *L, unsigned Count, unsigned TripCount,
if (DT && Count > 1) {
for (auto *BB : OriginalLoopBlocks) {
auto *BBDomNode = DT->getNode(BB);
+ SmallVector<BasicBlock *, 16> ChildrenToUpdate;
for (auto *ChildDomNode : BBDomNode->getChildren()) {
auto *ChildBB = ChildDomNode->getBlock();
- if (L->contains(ChildBB))
- continue;
- BasicBlock *NewIDom = DT->findNearestCommonDominator(BB, Latches[0]);
- DT->changeImmediateDominator(ChildBB, NewIDom);
+ if (!L->contains(ChildBB))
+ ChildrenToUpdate.push_back(ChildBB);
}
+ BasicBlock *NewIDom = DT->findNearestCommonDominator(BB, Latches[0]);
+ for (auto *ChildBB : ChildrenToUpdate)
+ DT->changeImmediateDominator(ChildBB, NewIDom);
}
}
OpenPOWER on IntegriCloud