Move the HasLoop method from the SCC class to the iterator class

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8268 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2003-08-31 19:51:22 +00:00
parent fe8d8806f7
commit 94d1092c6a
2 changed files with 26 additions and 24 deletions

View 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;
}
};

View 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;
}
};