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

AnalysisInfoMixin<PluginInlineAdvisorAnalysis>

A CRTP mix‐in that provides informational APIs needed for analysis passes.

Types

Name

Description

Result

Result holding the registered plugin advisor factory.

Type Aliases

Name

Description

AdvisorFactory

Factory that constructs a plugin InlineAdvisor for a module.

Member Functions

Name

Description

PluginInlineAdvisorAnalysis [constructor]

Construct analysis that exposes plugin factory Factory.

getResult

Return the registered plugin advisor factory.

run

Run the analysis and return the registered factory.

Static Member Functions

Name

Description

ID

Returns an opaque, unique ID for this analysis type.

Static Data Members

Name

Description

Key

Analysis key used to identify PluginInlineAdvisorAnalysis.

Created with MrDocs