forked from OSchip/llvm-project
[LCG] Move the call graph node class into the graph class's definition.
This will become necessary to build up the SCC iterators and SCC definitions. Moving it now so that subsequent diffs are incremental. llvm-svn: 206454
This commit is contained in:
parent
4c1b05f822
commit
b5f938dc00
llvm/include/llvm/Analysis
|
@ -166,6 +166,44 @@ public:
|
|||
}
|
||||
};
|
||||
|
||||
/// \brief A node in the call graph.
|
||||
///
|
||||
/// This represents a single node. It's primary roles are to cache the list of
|
||||
/// callees, de-duplicate and provide fast testing of whether a function is
|
||||
/// a callee, and facilitate iteration of child nodes in the graph.
|
||||
class Node {
|
||||
friend class LazyCallGraph;
|
||||
|
||||
LazyCallGraph *G;
|
||||
Function &F;
|
||||
mutable NodeVectorT Callees;
|
||||
SmallPtrSet<Function *, 4> CalleeSet;
|
||||
|
||||
/// \brief Basic constructor implements the scanning of F into Callees and
|
||||
/// CalleeSet.
|
||||
Node(LazyCallGraph &G, Function &F);
|
||||
|
||||
/// \brief Constructor used when copying a node from one graph to another.
|
||||
Node(LazyCallGraph &G, const Node &OtherN);
|
||||
|
||||
/// \brief Constructor used when moving a node from one graph to another.
|
||||
Node(LazyCallGraph &G, Node &&OtherN);
|
||||
|
||||
public:
|
||||
typedef LazyCallGraph::iterator iterator;
|
||||
|
||||
Function &getFunction() const {
|
||||
return F;
|
||||
};
|
||||
|
||||
iterator begin() const { return iterator(*G, Callees); }
|
||||
iterator end() const { return iterator(*G, Callees, iterator::IsAtEndT()); }
|
||||
|
||||
/// Equality is defined as address equality.
|
||||
bool operator==(const Node &N) const { return this == &N; }
|
||||
bool operator!=(const Node &N) const { return !operator==(N); }
|
||||
};
|
||||
|
||||
/// \brief Construct a graph for the given module.
|
||||
///
|
||||
/// This sets up the graph and computes all of the entry points of the graph.
|
||||
|
@ -232,44 +270,6 @@ private:
|
|||
Node *copyInto(const Node &OtherN);
|
||||
};
|
||||
|
||||
/// \brief A node in the call graph.
|
||||
///
|
||||
/// This represents a single node. It's primary roles are to cache the list of
|
||||
/// callees, de-duplicate and provide fast testing of whether a function is
|
||||
/// a callee, and facilitate iteration of child nodes in the graph.
|
||||
class LazyCallGraph::Node {
|
||||
friend class LazyCallGraph;
|
||||
|
||||
LazyCallGraph *G;
|
||||
Function &F;
|
||||
mutable NodeVectorT Callees;
|
||||
SmallPtrSet<Function *, 4> CalleeSet;
|
||||
|
||||
/// \brief Basic constructor implements the scanning of F into Callees and
|
||||
/// CalleeSet.
|
||||
Node(LazyCallGraph &G, Function &F);
|
||||
|
||||
/// \brief Constructor used when copying a node from one graph to another.
|
||||
Node(LazyCallGraph &G, const Node &OtherN);
|
||||
|
||||
/// \brief Constructor used when moving a node from one graph to another.
|
||||
Node(LazyCallGraph &G, Node &&OtherN);
|
||||
|
||||
public:
|
||||
typedef LazyCallGraph::iterator iterator;
|
||||
|
||||
Function &getFunction() const {
|
||||
return F;
|
||||
};
|
||||
|
||||
iterator begin() const { return iterator(*G, Callees); }
|
||||
iterator end() const { return iterator(*G, Callees, iterator::IsAtEndT()); }
|
||||
|
||||
/// Equality is defined as address equality.
|
||||
bool operator==(const Node &N) const { return this == &N; }
|
||||
bool operator!=(const Node &N) const { return !operator==(N); }
|
||||
};
|
||||
|
||||
// Provide GraphTraits specializations for call graphs.
|
||||
template <> struct GraphTraits<LazyCallGraph::Node *> {
|
||||
typedef LazyCallGraph::Node NodeType;
|
||||
|
|
Loading…
Reference in New Issue