Used for dynamically registering InlineAdvisors as plugins
Synopsis
Declared in <llvm/Analysis/InlineAdvisor.h>
class PluginInlineAdvisorAnalysis
: public AnalysisInfoMixin<PluginInlineAdvisorAnalysis>
Description
An advisor plugin adds a new advisor at runtime by registering an instance of PluginInlineAdvisorAnalysis in the current ModuleAnalysisManager. For example, the following code dynamically registers a DefaultInlineAdvisor:
namespace {
InlineAdvisor *defaultAdvisorFactory(Module &M, FunctionAnalysisManager &FAM, InlineParams Params, InlineContext IC) { return new DefaultInlineAdvisor(M, FAM, Params, IC); }
} // namespace
extern "C" LLVM_ATTRIBUTE_WEAK ::llvm::PassPluginLibraryInfo llvmGetPassPluginInfo() { return {LLVM_PLUGIN_API_VERSION, "DynamicDefaultAdvisor", LLVM_VERSION_STRING, []&PB) { PB.registerAnalysisRegistrationCallback( []&MAM) { PluginInlineAdvisorAnalysis PA(defaultAdvisorFactory); MAM.registerPass([&]{ return PA; }); }); }}; }
A plugin must implement an AdvisorFactory and register it with a PluginInlineAdvisorAnlysis to the provided ModuleAnalysisManager.
If such a plugin has been registered InlineAdvisorAnalysis::Result::tryCreate will return the dynamically loaded advisor.
Base Classes
Name |
Description |
A CRTP mix‐in that provides informational APIs needed for analysis passes. |
Types
Name |
Description |
Result holding the registered plugin advisor factory. |
Type Aliases
Name |
Description |
Factory that constructs a plugin InlineAdvisor for a module. |
Member Functions
Name |
Description |
|
Construct analysis that exposes plugin factory |
Return the registered plugin advisor factory. |
|
Run the analysis and return the registered factory. |
Static Member Functions
Name |
Description |
Returns an opaque, unique ID for this analysis type. |