brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.1 KiB · beefff2 Raw
38 lines · cpp
1#include "llvm/IR/Function.h"2#include "llvm/IR/Module.h"3#include "llvm/Pass.h"4#include "llvm/Passes/PassBuilder.h"5#include "llvm/Passes/PassPlugin.h"6#include "llvm/Support/CommandLine.h"7#include "llvm/Support/raw_ostream.h"8 9#include "llvm/Analysis/InlineAdvisor.h"10 11using namespace llvm;12 13namespace {14 15InlineAdvisor *DefaultAdvisorFactory(Module &M, FunctionAnalysisManager &FAM,16                                     InlineParams Params, InlineContext IC) {17  return new DefaultInlineAdvisor(M, FAM, Params, IC);18}19 20} // namespace21 22/* New PM Registration */23llvm::PassPluginLibraryInfo getDefaultDynamicAdvisorPluginInfo() {24  return {LLVM_PLUGIN_API_VERSION, "DynamicDefaultAdvisor", LLVM_VERSION_STRING,25          [](PassBuilder &PB) {26            PB.registerAnalysisRegistrationCallback(27                [](ModuleAnalysisManager &MAM) {28                  PluginInlineAdvisorAnalysis PA(DefaultAdvisorFactory);29                  MAM.registerPass([&] { return PA; });30                });31          }};32}33 34extern "C" LLVM_ATTRIBUTE_WEAK ::llvm::PassPluginLibraryInfo35llvmGetPassPluginInfo() {36  return getDefaultDynamicAdvisorPluginInfo();37}38