mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-03-19 04:31:17 +00:00
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:
parent
fe8d8806f7
commit
94d1092c6a
@ -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;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user