X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=include%2Fllvm%2FADT%2FSCCIterator.h;h=bd18f13ada995bc8ee83b43395b744dd66e407cb;hb=fc82fabe00b0b820e3c0d7fc9e289bace0295f11;hp=2ea780ca92dc2ffe84a9fd897228aec8a2921100;hpb=de0579d94640fa4f32aaa618e954f9504db6da4d;p=oota-llvm.git diff --git a/include/llvm/ADT/SCCIterator.h b/include/llvm/ADT/SCCIterator.h index 2ea780ca92d..bd18f13ada9 100644 --- a/include/llvm/ADT/SCCIterator.h +++ b/include/llvm/ADT/SCCIterator.h @@ -1,28 +1,28 @@ -//===-- Support/SCCIterator.h - SCC iterator --------------------*- C++ -*-===// -// +//===-- Support/SCCIterator.h - Strongly Connected Comp. Iter. --*- C++ -*-===// +// // The LLVM Compiler Infrastructure // -// This file was developed by the LLVM research group and is distributed under -// the University of Illinois Open Source License. See LICENSE.TXT for details. -// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// //===----------------------------------------------------------------------===// // -// This builds on the Support/GraphTraits.h file to find the strongly connected +// This builds on the llvm/ADT/GraphTraits.h file to find the strongly connected // components (SCCs) of a graph in O(N+E) time using Tarjan's DFS algorithm. // // The SCC iterator has the important property that if a node in SCC S1 has an // edge to a node in SCC S2, then it visits S1 *after* S2. -// +// // To visit S1 *before* S2, use the scc_iterator on the Inverse graph. // (NOTE: This requires some simple wrappers and is not supported yet.) // //===----------------------------------------------------------------------===// -#ifndef SUPPORT_SCCITERATOR_H -#define SUPPORT_SCCITERATOR_H +#ifndef LLVM_ADT_SCCITERATOR_H +#define LLVM_ADT_SCCITERATOR_H -#include "Support/GraphTraits.h" -#include "Support/iterator" +#include "llvm/ADT/GraphTraits.h" +#include "llvm/ADT/iterator" #include #include @@ -71,8 +71,8 @@ class scc_iterator SCCNodeStack.push_back(N); MinVisitNumStack.push_back(visitNum); VisitStack.push_back(std::make_pair(N, GT::child_begin(N))); - //DEBUG(std::cerr << "TarjanSCC: Node " << N << - // " : visitNum = " << visitNum << "\n"); + //DOUT << "TarjanSCC: Node " << N << + // " : visitNum = " << visitNum << "\n"; } // The stack-based DFS traversal; defined below. @@ -106,9 +106,9 @@ class scc_iterator if (!MinVisitNumStack.empty() && MinVisitNumStack.back() > minVisitNum) MinVisitNumStack.back() = minVisitNum; - //DEBUG(std::cerr << "TarjanSCC: Popped node " << visitingN << + //DOUT << "TarjanSCC: Popped node " << visitingN << // " : minVisitNum = " << minVisitNum << "; Node visit num = " << - // nodeVisitNumbers[visitingN] << "\n"); + // nodeVisitNumbers[visitingN] << "\n"; if (minVisitNum == nodeVisitNumbers[visitingN]) { // A full SCC is on the SCCNodeStack! It includes all nodes below @@ -118,7 +118,7 @@ class scc_iterator do { CurrentSCC.push_back(SCCNodeStack.back()); SCCNodeStack.pop_back(); - nodeVisitNumbers[CurrentSCC.back()] = ~0UL; + nodeVisitNumbers[CurrentSCC.back()] = ~0U; } while (CurrentSCC.back() != visitingN); return; } @@ -144,7 +144,7 @@ public: return CurrentSCC.empty(); } - inline bool operator==(const _Self& x) const { + inline bool operator==(const _Self& x) const { return VisitStack == x.VisitStack && CurrentSCC == x.CurrentSCC; } inline bool operator!=(const _Self& x) const { return !operator==(x); } @@ -152,18 +152,18 @@ public: // Iterator traversal: forward iteration only inline _Self& operator++() { // Preincrement GetNextSCC(); - return *this; + return *this; } inline _Self operator++(int) { // Postincrement - _Self tmp = *this; ++*this; return tmp; + _Self tmp = *this; ++*this; return tmp; } // Retrieve a reference to the current SCC - inline const SccTy &operator*() const { + inline const SccTy &operator*() const { assert(!CurrentSCC.empty() && "Dereferencing END SCC iterator!"); return CurrentSCC; } - inline SccTy &operator*() { + inline SccTy &operator*() { assert(!CurrentSCC.empty() && "Dereferencing END SCC iterator!"); return CurrentSCC; }