diff --git a/clang/examples/wpa/clang-wpa.cpp b/clang/examples/wpa/clang-wpa.cpp index b515e3314830..c75626dab5d2 100644 --- a/clang/examples/wpa/clang-wpa.cpp +++ b/clang/examples/wpa/clang-wpa.cpp @@ -31,6 +31,8 @@ int main(int argc, char **argv) { FileManager FileMgr; std::vector ASTUnits; + Program Prog; + if (InputFilenames.empty()) return 0; @@ -47,7 +49,7 @@ int main(int argc, char **argv) { } llvm::OwningPtr CG; - CG.reset(new CallGraph()); + CG.reset(new CallGraph(Prog)); for (unsigned i = 0, e = ASTUnits.size(); i != e; ++i) CG->addTU(ASTUnits[i]->getASTContext()); diff --git a/clang/include/clang/Index/CallGraph.h b/clang/include/clang/Index/CallGraph.h index 5edfe6fea8db..336bf47a2efc 100644 --- a/clang/include/clang/Index/CallGraph.h +++ b/clang/include/clang/Index/CallGraph.h @@ -54,7 +54,7 @@ public: class CallGraph { /// Program manages all Entities. - idx::Program Prog; + idx::Program &Prog; typedef std::map FunctionMapTy; @@ -71,7 +71,7 @@ class CallGraph { CallGraphNode *ExternalCallingNode; public: - CallGraph(); + CallGraph(idx::Program &P); ~CallGraph(); typedef FunctionMapTy::iterator iterator; diff --git a/clang/lib/Index/CallGraph.cpp b/clang/lib/Index/CallGraph.cpp index 6403319de1f0..dedcc0e80816 100644 --- a/clang/lib/Index/CallGraph.cpp +++ b/clang/lib/Index/CallGraph.cpp @@ -55,7 +55,7 @@ void CGBuilder::VisitCallExpr(CallExpr *CE) { } } -CallGraph::CallGraph() : Root(0) { +CallGraph::CallGraph(Program &P) : Prog(P), Root(0) { ExternalCallingNode = getOrInsertFunction(Entity()); }