[llvm] r206454 - [LCG] Move the call graph node class into the graph class's definition.

Chandler Carruth chandlerc at gmail.com
Thu Apr 17 02:40:14 PDT 2014


Author: chandlerc
Date: Thu Apr 17 04:40:13 2014
New Revision: 206454

URL: http://llvm.org/viewvc/llvm-project?rev=206454&view=rev
Log:
[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.

Modified:
    llvm/trunk/include/llvm/Analysis/LazyCallGraph.h

Modified: llvm/trunk/include/llvm/Analysis/LazyCallGraph.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/LazyCallGraph.h?rev=206454&r1=206453&r2=206454&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Analysis/LazyCallGraph.h (original)
+++ llvm/trunk/include/llvm/Analysis/LazyCallGraph.h Thu Apr 17 04:40:13 2014
@@ -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;





More information about the llvm-commits mailing list