[PM] [cleanup] Rearrange the public and private sections of this class
authorChandler Carruth <chandlerc@gmail.com>
Mon, 2 Dec 2013 12:35:56 +0000 (12:35 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Mon, 2 Dec 2013 12:35:56 +0000 (12:35 +0000)
to be a bit more sensible. The public interface now is first followed by
the implementation details.

This also resolves a FIXME to make something private -- it was already
possible as the one special caller was already a friend.

No functionality changed.

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

include/llvm/Analysis/CallGraph.h

index e80501555b2cdd266f956f4a5419d2a7006b99c2..6b44546e76d062367c9d1f54173349dc9f3ab85a 100644 (file)
@@ -165,28 +165,11 @@ public:
 /// Typically represents a function in the call graph. There are also special
 /// "null" nodes used to represent theoretical entries in the call graph.
 class CallGraphNode {
-  friend class CallGraph;
-
-  AssertingVH<Function> F;
-
 public:
   /// \brief A pair of the calling instruction (a call or invoke)
   /// and the call graph node being called.
   typedef std::pair<WeakVH, CallGraphNode *> CallRecord;
 
-private:
-  std::vector<CallRecord> CalledFunctions;
-
-  /// \brief The number of times that this CallGraphNode occurs in the
-  /// CalledFunctions array of this or other CallGraphNodes.
-  unsigned NumReferences;
-
-  CallGraphNode(const CallGraphNode &) LLVM_DELETED_FUNCTION;
-  void operator=(const CallGraphNode &) LLVM_DELETED_FUNCTION;
-
-  void DropRef() { --NumReferences; }
-  void AddRef() { ++NumReferences; }
-
 public:
   typedef std::vector<CallRecord> CalledFunctionsVector;
 
@@ -281,12 +264,48 @@ public:
   /// Note that this method takes linear time, so it should be used sparingly.
   void replaceCallEdge(CallSite CS, CallSite NewCS, CallGraphNode *NewNode);
 
+private:
+  friend class CallGraph;
+
+  AssertingVH<Function> F;
+
+  std::vector<CallRecord> CalledFunctions;
+
+  /// \brief The number of times that this CallGraphNode occurs in the
+  /// CalledFunctions array of this or other CallGraphNodes.
+  unsigned NumReferences;
+
+  CallGraphNode(const CallGraphNode &) LLVM_DELETED_FUNCTION;
+  void operator=(const CallGraphNode &) LLVM_DELETED_FUNCTION;
+
+  void DropRef() { --NumReferences; }
+  void AddRef() { ++NumReferences; }
+
   /// \brief A special function that should only be used by the CallGraph class.
-  //
-  // FIXME: Make this private?
   void allReferencesDropped() { NumReferences = 0; }
 };
 
+/// \brief An analysis pass to compute the \c CallGraph for a \c Module.
+///
+/// This class implements the concept of an analysis pass used by the \c
+/// ModuleAnalysisManager to run an analysis over a module and cache the
+/// resulting data.
+class CallGraphAnalysis {
+public:
+  /// \brief A formulaic typedef to inform clients of the result type.
+  typedef CallGraph Result;
+
+  static void *ID() { return (void *)&PassID; }
+
+  /// \brief Compute the \c CallGraph for the module \c M.
+  ///
+  /// The real work here is done in the \c CallGraph constructor.
+  CallGraph run(Module *M) { return CallGraph(*M); }
+
+private:
+  static char PassID;
+};
+
 /// \brief The \c ModulePass which wraps up a \c CallGraph and the logic to
 /// build it.
 ///