Move the HasLoop method from the SCC class to the iterator class
authorChris Lattner <sabre@nondot.org>
Sun, 31 Aug 2003 19:51:22 +0000 (19:51 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 31 Aug 2003 19:51:22 +0000 (19:51 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8268 91177308-0d34-0410-b5e6-96231b3b80d8

include/Support/SCCIterator.h
include/llvm/ADT/SCCIterator.h

index bb78fb21c104f91da7cace19181ad62fb5741f92..753dd55343c1b6812fd5d47900bfae7f73349275 100644 (file)
@@ -35,18 +35,6 @@ struct SCC : public std::vector<typename GT::NodeType*> {
   typedef typename super::const_iterator         const_iterator;
   typedef typename super::reverse_iterator       reverse_iterator;
   typedef typename super::const_reverse_iterator const_reverse_iterator;
-
-  // HasLoop() -- Test if this SCC has a loop.  If it has more than one
-  // node, this is trivially true.  If not, it may still contain a loop
-  // if the node has an edge back to itself.
-  bool HasLoop() const {
-    if (size() > 1) return true;
-    NodeType* N = front();
-    for (ChildItTy CI = GT::child_begin(N), CE=GT::child_end(N); CI != CE; ++CI)
-      if (*CI == N)
-        return true;
-    return false;
-  }
 };
 
 //--------------------------------------------------------------------------
@@ -192,6 +180,19 @@ public:
     assert(!CurrentSCC.empty() && "Dereferencing END SCC iterator!");
     return CurrentSCC;
   }
+
+  // hasLoop() -- Test if the current SCC has a loop.  If it has more than one
+  // node, this is trivially true.  If not, it may still contain a loop if the
+  // node has an edge back to itself.
+  bool hasLoop() const {
+    assert(!CurrentSCC.empty() && "Dereferencing END SCC iterator!");
+    if (CurrentSCC.size() > 1) return true;
+    NodeType *N = CurrentSCC.front();
+    for (ChildItTy CI = GT::child_begin(N), CE=GT::child_end(N); CI != CE; ++CI)
+      if (*CI == N)
+        return true;
+    return false;
+  }
 };
 
 
index bb78fb21c104f91da7cace19181ad62fb5741f92..753dd55343c1b6812fd5d47900bfae7f73349275 100644 (file)
@@ -35,18 +35,6 @@ struct SCC : public std::vector<typename GT::NodeType*> {
   typedef typename super::const_iterator         const_iterator;
   typedef typename super::reverse_iterator       reverse_iterator;
   typedef typename super::const_reverse_iterator const_reverse_iterator;
-
-  // HasLoop() -- Test if this SCC has a loop.  If it has more than one
-  // node, this is trivially true.  If not, it may still contain a loop
-  // if the node has an edge back to itself.
-  bool HasLoop() const {
-    if (size() > 1) return true;
-    NodeType* N = front();
-    for (ChildItTy CI = GT::child_begin(N), CE=GT::child_end(N); CI != CE; ++CI)
-      if (*CI == N)
-        return true;
-    return false;
-  }
 };
 
 //--------------------------------------------------------------------------
@@ -192,6 +180,19 @@ public:
     assert(!CurrentSCC.empty() && "Dereferencing END SCC iterator!");
     return CurrentSCC;
   }
+
+  // hasLoop() -- Test if the current SCC has a loop.  If it has more than one
+  // node, this is trivially true.  If not, it may still contain a loop if the
+  // node has an edge back to itself.
+  bool hasLoop() const {
+    assert(!CurrentSCC.empty() && "Dereferencing END SCC iterator!");
+    if (CurrentSCC.size() > 1) return true;
+    NodeType *N = CurrentSCC.front();
+    for (ChildItTy CI = GT::child_begin(N), CE=GT::child_end(N); CI != CE; ++CI)
+      if (*CI == N)
+        return true;
+    return false;
+  }
 };