[LCG] Move the call graph node class into the graph class's definition.
authorChandler Carruth <chandlerc@gmail.com>
Thu, 17 Apr 2014 09:40:13 +0000 (09:40 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Thu, 17 Apr 2014 09:40:13 +0000 (09:40 +0000)
This will become necessary to build up the SCC iterators and SCC
definitions. Moving it now so that subsequent diffs are incremental.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@206454 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Analysis/LazyCallGraph.h

index f3c2ed9c1d527ea05f5932c09c564b82ec601856..faf9348f711fff8596a18f842cf008c777cc58ad 100644 (file)
@@ -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;