diff options
-rw-r--r-- | include/Support/SCCIterator.h | 25 | ||||
-rw-r--r-- | include/llvm/ADT/SCCIterator.h | 25 |
2 files changed, 26 insertions, 24 deletions
diff --git a/include/Support/SCCIterator.h b/include/Support/SCCIterator.h index bb78fb2..753dd55 100644 --- a/include/Support/SCCIterator.h +++ b/include/Support/SCCIterator.h @@ -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; + } }; diff --git a/include/llvm/ADT/SCCIterator.h b/include/llvm/ADT/SCCIterator.h index bb78fb2..753dd55 100644 --- a/include/llvm/ADT/SCCIterator.h +++ b/include/llvm/ADT/SCCIterator.h @@ -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; + } }; |