[llvm-commits] CVS: llvm/lib/Analysis/LoopInfo.cpp
Chris Lattner
lattner at cs.uiuc.edu
Wed Feb 19 18:29:01 PST 2003
Changes in directory llvm/lib/Analysis:
LoopInfo.cpp updated: 1.28 -> 1.29
---
Log message:
Fix the requisite bug that I introduced
---
Diffs of the changes:
Index: llvm/lib/Analysis/LoopInfo.cpp
diff -u llvm/lib/Analysis/LoopInfo.cpp:1.28 llvm/lib/Analysis/LoopInfo.cpp:1.29
--- llvm/lib/Analysis/LoopInfo.cpp:1.28 Wed Feb 19 18:18:07 2003
+++ llvm/lib/Analysis/LoopInfo.cpp Wed Feb 19 18:28:00 2003
@@ -155,17 +155,19 @@
// 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);
+ }
}
}
}
More information about the llvm-commits
mailing list