From 1ecd740cf0b99a7c2ac79fdfdf08338588296910 Mon Sep 17 00:00:00 2001 From: Chandler Carruth Date: Thu, 10 Mar 2016 11:08:44 +0000 Subject: [PATCH] [CG] Actually hoist up the generic CallGraphPrinter pass from a weird location in the opt tool to live along side the analysis in LLVM's libraries. No functionality changed here, but this will allow me to port the printer to the new pass manager as well. llvm-svn: 263101 --- llvm/include/llvm/InitializePasses.h | 1 + llvm/lib/Analysis/Analysis.cpp | 1 + llvm/lib/Analysis/CallGraph.cpp | 26 ++++++++++++++++++++++++++ llvm/tools/opt/AnalysisWrappers.cpp | 20 -------------------- 4 files changed, 28 insertions(+), 20 deletions(-) diff --git a/llvm/include/llvm/InitializePasses.h b/llvm/include/llvm/InitializePasses.h index 9c3a576aab59..abfbf41152ae 100644 --- a/llvm/include/llvm/InitializePasses.h +++ b/llvm/include/llvm/InitializePasses.h @@ -82,6 +82,7 @@ void initializeBranchFolderPassPass(PassRegistry&); void initializeBranchProbabilityInfoWrapperPassPass(PassRegistry&); void initializeBreakCriticalEdgesPass(PassRegistry&); void initializeCallGraphDOTPrinterPass(PassRegistry&); +void initializeCallGraphPrinterLegacyPassPass(PassRegistry&); void initializeCallGraphViewerPass(PassRegistry&); void initializeCFGOnlyPrinterPass(PassRegistry&); void initializeCFGOnlyViewerPass(PassRegistry&); diff --git a/llvm/lib/Analysis/Analysis.cpp b/llvm/lib/Analysis/Analysis.cpp index 4048146515f3..77d89dcd7b58 100644 --- a/llvm/lib/Analysis/Analysis.cpp +++ b/llvm/lib/Analysis/Analysis.cpp @@ -27,6 +27,7 @@ void llvm::initializeAnalysis(PassRegistry &Registry) { initializeBranchProbabilityInfoWrapperPassPass(Registry); initializeCallGraphWrapperPassPass(Registry); initializeCallGraphDOTPrinterPass(Registry); + initializeCallGraphPrinterLegacyPassPass(Registry); initializeCallGraphViewerPass(Registry); initializeCostModelAnalysisPass(Registry); initializeCFGViewerPass(Registry); diff --git a/llvm/lib/Analysis/CallGraph.cpp b/llvm/lib/Analysis/CallGraph.cpp index 426684be58a6..235d0f61263a 100644 --- a/llvm/lib/Analysis/CallGraph.cpp +++ b/llvm/lib/Analysis/CallGraph.cpp @@ -302,3 +302,29 @@ void CallGraphWrapperPass::print(raw_ostream &OS, const Module *) const { LLVM_DUMP_METHOD void CallGraphWrapperPass::dump() const { print(dbgs(), nullptr); } + +namespace { +struct CallGraphPrinterLegacyPass : public ModulePass { + static char ID; // Pass ID, replacement for typeid + CallGraphPrinterLegacyPass() : ModulePass(ID) { + initializeCallGraphPrinterLegacyPassPass(*PassRegistry::getPassRegistry()); + } + + void getAnalysisUsage(AnalysisUsage &AU) const override { + AU.setPreservesAll(); + AU.addRequiredTransitive(); + } + bool runOnModule(Module &M) override { + getAnalysis().print(errs(), &M); + return false; + } +}; +} + +char CallGraphPrinterLegacyPass::ID = 0; + +INITIALIZE_PASS_BEGIN(CallGraphPrinterLegacyPass, "print-callgraph", + "Print a call graph", true, true) +INITIALIZE_PASS_DEPENDENCY(CallGraphWrapperPass) +INITIALIZE_PASS_END(CallGraphPrinterLegacyPass, "print-callgraph", + "Print a call graph", true, true) diff --git a/llvm/tools/opt/AnalysisWrappers.cpp b/llvm/tools/opt/AnalysisWrappers.cpp index 4bdc268f8d75..cfdd2cf1582b 100644 --- a/llvm/tools/opt/AnalysisWrappers.cpp +++ b/llvm/tools/opt/AnalysisWrappers.cpp @@ -71,23 +71,3 @@ char ExternalFunctionsPassedConstants::ID = 0; static RegisterPass P1("print-externalfnconstants", "Print external fn callsites passed constants"); - -namespace { - struct CallGraphPrinter : public ModulePass { - static char ID; // Pass ID, replacement for typeid - CallGraphPrinter() : ModulePass(ID) {} - - void getAnalysisUsage(AnalysisUsage &AU) const override { - AU.setPreservesAll(); - AU.addRequiredTransitive(); - } - bool runOnModule(Module &M) override { - getAnalysis().print(errs(), &M); - return false; - } - }; -} - -char CallGraphPrinter::ID = 0; -static RegisterPass - P2("print-callgraph", "Print a call graph");