summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/llvm/Analysis/CallGraph.h23
-rw-r--r--lib/Analysis/IPA/CallGraph.cpp11
2 files changed, 11 insertions, 23 deletions
diff --git a/include/llvm/Analysis/CallGraph.h b/include/llvm/Analysis/CallGraph.h
index 3c9106cec2..740709d29f 100644
--- a/include/llvm/Analysis/CallGraph.h
+++ b/include/llvm/Analysis/CallGraph.h
@@ -137,6 +137,12 @@ public:
destroy();
}
+ /// Print the types found in the module. If the optional Module parameter is
+ /// passed in, then the types are printed symbolically if possible, using the
+ /// symbol table from the module.
+ ///
+ void print(std::ostream &o, const Module *M) const;
+
private:
//===---------------------------------------------------------------------
// Implementation of CallGraph construction
@@ -250,21 +256,4 @@ template<> struct GraphTraits<const CallGraph*> :
}
};
-
-//===----------------------------------------------------------------------===//
-// Printing support for Call Graphs
-//
-
-// Stuff for printing out a callgraph...
-
-void WriteToOutput(const CallGraph &, std::ostream &o);
-inline std::ostream &operator <<(std::ostream &o, const CallGraph &CG) {
- WriteToOutput(CG, o); return o;
-}
-
-void WriteToOutput(const CallGraphNode *, std::ostream &o);
-inline std::ostream &operator <<(std::ostream &o, const CallGraphNode *CGN) {
- WriteToOutput(CGN, o); return o;
-}
-
#endif
diff --git a/lib/Analysis/IPA/CallGraph.cpp b/lib/Analysis/IPA/CallGraph.cpp
index 5c4b5d81f7..2c26f8dbb2 100644
--- a/lib/Analysis/IPA/CallGraph.cpp
+++ b/lib/Analysis/IPA/CallGraph.cpp
@@ -130,8 +130,7 @@ void CallGraph::destroy() {
FunctionMap.clear();
}
-
-void WriteToOutput(const CallGraphNode *CGN, std::ostream &o) {
+static void WriteToOutput(const CallGraphNode *CGN, std::ostream &o) {
if (CGN->getFunction())
o << "Call graph node for function: '"
<< CGN->getFunction()->getName() <<"'\n";
@@ -146,11 +145,11 @@ void WriteToOutput(const CallGraphNode *CGN, std::ostream &o) {
o << "\n";
}
-void WriteToOutput(const CallGraph &CG, std::ostream &o) {
- o << "CallGraph Root is:\n" << CG.getRoot();
+void CallGraph::print(std::ostream &o, const Module *M) const {
+ o << "CallGraph Root is:\n" << getRoot();
- for (CallGraph::const_iterator I = CG.begin(), E = CG.end(); I != E; ++I)
- o << I->second;
+ for (CallGraph::const_iterator I = begin(), E = end(); I != E; ++I)
+ WriteToOutput(I->second, o);
}