Allow clients to delete loops, add a new method
authorChris Lattner <sabre@nondot.org>
Sun, 18 Apr 2004 05:37:42 +0000 (05:37 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 18 Apr 2004 05:37:42 +0000 (05:37 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13031 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Analysis/LoopInfo.h

index ff49f456e313d70f242a531c960bf3681449ac80..7daabe53ec38329fc6d26c2a336af6a124777154 100644 (file)
@@ -53,6 +53,10 @@ public:
   /// Loop ctor - This creates an empty loop.
   Loop() : ParentLoop(0), LoopDepth(0) {
   }
+  ~Loop() {
+    for (unsigned i = 0, e = SubLoops.size(); i != e; ++i)
+      delete SubLoops[i];
+  }
 
   unsigned getLoopDepth() const { return LoopDepth; }
   BasicBlock *getHeader() const { return Blocks.front(); }
@@ -192,11 +196,6 @@ private:
   Loop(BasicBlock *BB) : ParentLoop(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) {
     LoopDepth = Level;
     for (unsigned i = 0, e = SubLoops.size(); i != e; ++i)
@@ -262,6 +261,11 @@ public:
   ///
   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
   /// specified loop.  This should be used by transformations that restructure
   /// the loop hierarchy tree.