Allow clients to delete loops, add a new method

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13031 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2004-04-18 05:37:42 +00:00
parent 93d82020ef
commit 4e55b7d2c6

View File

@ -53,6 +53,10 @@ public:
/// Loop ctor - This creates an empty loop. /// Loop ctor - This creates an empty loop.
Loop() : ParentLoop(0), LoopDepth(0) { Loop() : ParentLoop(0), LoopDepth(0) {
} }
~Loop() {
for (unsigned i = 0, e = SubLoops.size(); i != e; ++i)
delete SubLoops[i];
}
unsigned getLoopDepth() const { return LoopDepth; } unsigned getLoopDepth() const { return LoopDepth; }
BasicBlock *getHeader() const { return Blocks.front(); } BasicBlock *getHeader() const { return Blocks.front(); }
@ -192,11 +196,6 @@ private:
Loop(BasicBlock *BB) : ParentLoop(0) { Loop(BasicBlock *BB) : ParentLoop(0) {
Blocks.push_back(BB); LoopDepth = 0; Blocks.push_back(BB); LoopDepth = 0;
} }
~Loop() {
for (unsigned i = 0, e = SubLoops.size(); i != e; ++i)
delete SubLoops[i];
}
void setLoopDepth(unsigned Level) { void setLoopDepth(unsigned Level) {
LoopDepth = Level; LoopDepth = Level;
for (unsigned i = 0, e = SubLoops.size(); i != e; ++i) for (unsigned i = 0, e = SubLoops.size(); i != e; ++i)
@ -262,6 +261,11 @@ public:
/// ///
virtual void getAnalysisUsage(AnalysisUsage &AU) const; virtual void getAnalysisUsage(AnalysisUsage &AU) const;
/// removeLoop - This removes the specified top-level loop from this loop info
/// object. The loop is not deleted, as it will presumably be inserted into
/// another loop.
Loop *removeLoop(iterator I);
/// changeLoopFor - Change the top-level loop that contains BB to the /// changeLoopFor - Change the top-level loop that contains BB to the
/// specified loop. This should be used by transformations that restructure /// specified loop. This should be used by transformations that restructure
/// the loop hierarchy tree. /// the loop hierarchy tree.