diff options
-rw-r--r-- | include/llvm/Analysis/LazyCallGraph.h | 76 |
1 files changed, 38 insertions, 38 deletions
diff --git a/include/llvm/Analysis/LazyCallGraph.h b/include/llvm/Analysis/LazyCallGraph.h index f3c2ed9c1d..faf9348f71 100644 --- a/include/llvm/Analysis/LazyCallGraph.h +++ b/include/llvm/Analysis/LazyCallGraph.h @@ -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; |