xref: /llvm-project/llvm/unittests/Analysis/InlineAdvisorPlugin/InlineAdvisorPlugin.cpp (revision c84a99dfd391eb4d89aff8d6453016045098b444)
15b455a8eSibricchi #include "llvm/IR/Function.h"
25b455a8eSibricchi #include "llvm/IR/Module.h"
35b455a8eSibricchi #include "llvm/Pass.h"
45b455a8eSibricchi #include "llvm/Passes/PassBuilder.h"
55b455a8eSibricchi #include "llvm/Passes/PassPlugin.h"
65b455a8eSibricchi #include "llvm/Support/CommandLine.h"
75b455a8eSibricchi #include "llvm/Support/raw_ostream.h"
85b455a8eSibricchi 
95b455a8eSibricchi #include "llvm/Analysis/InlineAdvisor.h"
105b455a8eSibricchi 
115b455a8eSibricchi using namespace llvm;
125b455a8eSibricchi 
135b455a8eSibricchi namespace {
145b455a8eSibricchi 
155b455a8eSibricchi InlineAdvisor *DefaultAdvisorFactory(Module &M, FunctionAnalysisManager &FAM,
165b455a8eSibricchi                                      InlineParams Params, InlineContext IC) {
175b455a8eSibricchi   return new DefaultInlineAdvisor(M, FAM, Params, IC);
185b455a8eSibricchi }
195b455a8eSibricchi 
205b455a8eSibricchi } // namespace
215b455a8eSibricchi 
225b455a8eSibricchi /* New PM Registration */
235b455a8eSibricchi llvm::PassPluginLibraryInfo getDefaultDynamicAdvisorPluginInfo() {
245b455a8eSibricchi   return {LLVM_PLUGIN_API_VERSION, "DynamicDefaultAdvisor", LLVM_VERSION_STRING,
255b455a8eSibricchi           [](PassBuilder &PB) {
26*c84a99dfSMichele Scandale             PB.registerAnalysisRegistrationCallback(
27*c84a99dfSMichele Scandale                 [](ModuleAnalysisManager &MAM) {
28*c84a99dfSMichele Scandale                   PluginInlineAdvisorAnalysis PA(DefaultAdvisorFactory);
29*c84a99dfSMichele Scandale                   MAM.registerPass([&] { return PA; });
305b455a8eSibricchi                 });
315b455a8eSibricchi           }};
325b455a8eSibricchi }
335b455a8eSibricchi 
345b455a8eSibricchi extern "C" LLVM_ATTRIBUTE_WEAK ::llvm::PassPluginLibraryInfo
355b455a8eSibricchi llvmGetPassPluginInfo() {
365b455a8eSibricchi   return getDefaultDynamicAdvisorPluginInfo();
375b455a8eSibricchi }
38