From 9f35277950a43a348ecee2f72d0378a67df04a4f Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Thu, 23 Aug 2001 17:05:59 +0000 Subject: [PATCH] * Add assertions * Add a nodeVisited method to the DF interator llvm-svn: 362 --- llvm/include/llvm/CFG.h | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/llvm/include/llvm/CFG.h b/llvm/include/llvm/CFG.h index 05465ea6ac9c..5228746f3425 100644 --- a/llvm/include/llvm/CFG.h +++ b/llvm/include/llvm/CFG.h @@ -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) {