* Add assertions
authorChris Lattner <sabre@nondot.org>
Thu, 23 Aug 2001 17:05:59 +0000 (17:05 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 23 Aug 2001 17:05:59 +0000 (17:05 +0000)
* Add a nodeVisited method to the DF interator

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@362 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/CFG.h

index 05465ea6ac9cf24003131851cd3962ed8659f368..5228746f34256086139f3e26e012263978f2ca87 100644 (file)
@@ -108,9 +108,13 @@ public:
   typedef SuccIterator<_Term, _BB> _Self;
   // TODO: This can be random access iterator, need operator+ and stuff tho
   
-  inline SuccIterator(_Term T) : Term(T), idx(0) {}         // begin iterator
-  inline SuccIterator(_Term T, bool) 
-    : Term(T), idx(Term->getNumSuccessors()) {}             // end iterator
+  inline SuccIterator(_Term T) : Term(T), idx(0) {         // begin iterator
+    assert(T && "getTerminator returned null!");
+  }
+  inline SuccIterator(_Term T, bool)                       // end iterator
+    : Term(T), idx(Term->getNumSuccessors()) {
+    assert(T && "getTerminator returned null!");
+  }
   
   inline bool operator==(const _Self& x) const { return idx == x.idx; }
   inline bool operator!=(const _Self& x) const { return !operator==(x); }
@@ -287,6 +291,14 @@ public:
   inline _Self operator++(int) { // Postincrement
     _Self tmp = *this; ++*this; return tmp; 
   }
+
+  // nodeVisited - return true if this iterator has already visited the
+  // specified node.  This is public, and will probably be used to iterate over
+  // nodes that a depth first iteration did not find: ie unreachable nodes.
+  //
+  inline bool nodeVisited(NodeType *Node) const { 
+    return Visited.count(Node) != 0;
+  }
 };
 
 inline df_iterator df_begin(Method *M, bool Reverse = false) {