summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis/LoopInfo.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2003-02-20 00:28:00 +0000
committerChris Lattner <sabre@nondot.org>2003-02-20 00:28:00 +0000
commit1cbe5116ff443d3f5ca05194e3d7e82bb9b0f1a3 (patch)
tree6be2ded537b3fdb6bb3dd85000276dedd17aa10b /llvm/lib/Analysis/LoopInfo.cpp
parent1dc4c29b6dab75cc6966a2ff34cc1ba109be0b16 (diff)
downloadbcm5719-llvm-1cbe5116ff443d3f5ca05194e3d7e82bb9b0f1a3.tar.gz
bcm5719-llvm-1cbe5116ff443d3f5ca05194e3d7e82bb9b0f1a3.zip
Fix the requisite bug that I introduced
llvm-svn: 5605
Diffstat (limited to 'llvm/lib/Analysis/LoopInfo.cpp')
-rw-r--r--llvm/lib/Analysis/LoopInfo.cpp24
1 files changed, 13 insertions, 11 deletions
diff --git a/llvm/lib/Analysis/LoopInfo.cpp b/llvm/lib/Analysis/LoopInfo.cpp
index ef4b6430ba2..70bf97caccd 100644
--- a/llvm/lib/Analysis/LoopInfo.cpp
+++ b/llvm/lib/Analysis/LoopInfo.cpp
@@ -155,17 +155,19 @@ Loop *LoopInfo::ConsiderForLoop(BasicBlock *BB, const DominatorSet &DS) {
// now by moving the loop into the correct subloop.
//
Loop *SubLoop = BBMI->second;
- Loop *OldSubLoopParent = SubLoop->getParentLoop();
- if (OldSubLoopParent != L) {
- // Remove SubLoop from OldSubLoopParent's list of subloops...
- std::vector<Loop*>::iterator I =
- std::find(OldSubLoopParent->SubLoops.begin(),
- OldSubLoopParent->SubLoops.end(), SubLoop);
- assert(I != OldSubLoopParent->SubLoops.end()
- && "Loop parent doesn't contain loop?");
- OldSubLoopParent->SubLoops.erase(I);
- SubLoop->ParentLoop = L;
- L->SubLoops.push_back(SubLoop);
+ if (SubLoop->getHeader() == *I) { // Only do this once for the loop...
+ Loop *OldSubLoopParent = SubLoop->getParentLoop();
+ if (OldSubLoopParent != L) {
+ // Remove SubLoop from OldSubLoopParent's list of subloops...
+ std::vector<Loop*>::iterator I =
+ std::find(OldSubLoopParent->SubLoops.begin(),
+ OldSubLoopParent->SubLoops.end(), SubLoop);
+ assert(I != OldSubLoopParent->SubLoops.end()
+ && "Loop parent doesn't contain loop?");
+ OldSubLoopParent->SubLoops.erase(I);
+ SubLoop->ParentLoop = L;
+ L->SubLoops.push_back(SubLoop);
+ }
}
}
}
OpenPOWER on IntegriCloud