diff options
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Passes/PassBuilder.cpp | 1 | ||||
| -rw-r--r-- | llvm/lib/Passes/PassRegistry.def | 1 | ||||
| -rw-r--r-- | llvm/lib/Transforms/IPO/SampleProfile.cpp | 22 | 
3 files changed, 19 insertions, 5 deletions
diff --git a/llvm/lib/Passes/PassBuilder.cpp b/llvm/lib/Passes/PassBuilder.cpp index 80cd918c2cc..fdf8c6982d5 100644 --- a/llvm/lib/Passes/PassBuilder.cpp +++ b/llvm/lib/Passes/PassBuilder.cpp @@ -62,6 +62,7 @@  #include "llvm/Transforms/InstCombine/InstCombine.h"  #include "llvm/Transforms/InstrProfiling.h"  #include "llvm/Transforms/PGOInstrumentation.h" +#include "llvm/Transforms/SampleProfile.h"  #include "llvm/Transforms/Scalar/ADCE.h"  #include "llvm/Transforms/Scalar/BDCE.h"  #include "llvm/Transforms/Scalar/DCE.h" diff --git a/llvm/lib/Passes/PassRegistry.def b/llvm/lib/Passes/PassRegistry.def index 10bbbae6b47..9aaf17779da 100644 --- a/llvm/lib/Passes/PassRegistry.def +++ b/llvm/lib/Passes/PassRegistry.def @@ -53,6 +53,7 @@ MODULE_PASS("pgo-instr-use", PGOInstrumentationUse())  MODULE_PASS("print", PrintModulePass(dbgs()))  MODULE_PASS("print-callgraph", CallGraphPrinterPass(dbgs()))  MODULE_PASS("print-lcg", LazyCallGraphPrinterPass(dbgs())) +MODULE_PASS("sample-profile", SampleProfileLoaderPass())  MODULE_PASS("strip-dead-prototypes", StripDeadPrototypesPass())  MODULE_PASS("verify", VerifierPass())  #undef MODULE_PASS diff --git a/llvm/lib/Transforms/IPO/SampleProfile.cpp b/llvm/lib/Transforms/IPO/SampleProfile.cpp index 6c0ce76be6d..68310687f82 100644 --- a/llvm/lib/Transforms/IPO/SampleProfile.cpp +++ b/llvm/lib/Transforms/IPO/SampleProfile.cpp @@ -22,6 +22,7 @@  //  //===----------------------------------------------------------------------===// +#include "llvm/Transforms/SampleProfile.h"  #include "llvm/ADT/DenseMap.h"  #include "llvm/ADT/SmallPtrSet.h"  #include "llvm/ADT/SmallSet.h" @@ -34,8 +35,8 @@  #include "llvm/IR/Dominators.h"  #include "llvm/IR/Function.h"  #include "llvm/IR/InstIterator.h" -#include "llvm/IR/IntrinsicInst.h"  #include "llvm/IR/Instructions.h" +#include "llvm/IR/IntrinsicInst.h"  #include "llvm/IR/LLVMContext.h"  #include "llvm/IR/MDBuilder.h"  #include "llvm/IR/Metadata.h" @@ -1225,10 +1226,8 @@ bool SampleProfileLoader::emitAnnotations(Function &F) {  }  char SampleProfileLoaderLegacyPass::ID = 0; -INITIALIZE_PASS_BEGIN(SampleProfileLoaderLegacyPass, "sample-profile", -                      "Sample Profile loader", false, false) -INITIALIZE_PASS_END(SampleProfileLoaderLegacyPass, "sample-profile", -                    "Sample Profile loader", false, false) +INITIALIZE_PASS(SampleProfileLoaderLegacyPass, "sample-profile", +                "Sample Profile loader", false, false)  bool SampleProfileLoader::doInitialization(Module &M) {    auto &Ctx = M.getContext(); @@ -1279,3 +1278,16 @@ bool SampleProfileLoader::runOnFunction(Function &F) {      return emitAnnotations(F);    return false;  } + +PreservedAnalyses SampleProfileLoaderPass::run(Module &M, +                                               AnalysisManager<Module> &AM) { + +  SampleProfileLoader SampleLoader(SampleProfileFile); + +  SampleLoader.doInitialization(M); + +  if (!SampleLoader.runOnModule(M)) +    return PreservedAnalyses::all(); + +  return PreservedAnalyses::none(); +}  | 

