class InlineAdvisor
Declaration
class InlineAdvisor { /* full declaration omitted */ };
Description
Interface for deciding whether to inline a call site or not.
Declared at: llvm/include/llvm/Analysis/InlineAdvisor.h:163
Member Variables
- protected llvm::Module& M
- protected llvm::FunctionAnalysisManager& FAM
- protected const Optional<llvm::InlineContext> IC
- protected const std::string AnnotatedInlinePassName
- protected std::unique_ptr< ImportedFunctionsInliningStatistics> ImportedFunctionsStats
Method Overview
- public InlineAdvisor(llvm::InlineAdvisor &&)
- protected InlineAdvisor(llvm::Module & M, llvm::FunctionAnalysisManager & FAM, Optional<llvm::InlineContext> IC = NoneType::None)
- public std::unique_ptr<InlineAdvice> getAdvice(llvm::CallBase & CB, bool MandatoryOnly = false)
- protected virtual std::unique_ptr<InlineAdvice> getAdviceImpl(llvm::CallBase & CB)
- public const char * getAnnotatedInlinePassName() const
- protected llvm::OptimizationRemarkEmitter & getCallerORE(llvm::CallBase & CB)
- protected virtual std::unique_ptr<InlineAdvice> getMandatoryAdvice(llvm::CallBase & CB, bool Advice)
- protected static llvm::InlineAdvisor::MandatoryInliningKind getMandatoryKind(llvm::CallBase & CB, llvm::FunctionAnalysisManager & FAM, llvm::OptimizationRemarkEmitter & ORE)
- public virtual void onPassEntry(LazyCallGraph::SCC * SCC = nullptr)
- public virtual void onPassExit(LazyCallGraph::SCC * SCC = nullptr)
- public virtual void print(llvm::raw_ostream & OS) const
- public virtual ~InlineAdvisor()
Methods
¶InlineAdvisor(llvm::InlineAdvisor&&)
InlineAdvisor(llvm::InlineAdvisor&&)
Declared at: llvm/include/llvm/Analysis/InlineAdvisor.h:165
Parameters
¶InlineAdvisor(llvm::Module& M,
llvm::FunctionAnalysisManager& FAM,
Optional<llvm::InlineContext> IC =
NoneType::None)
InlineAdvisor(llvm::Module& M,
llvm::FunctionAnalysisManager& FAM,
Optional<llvm::InlineContext> IC =
NoneType::None)
Declared at: llvm/include/llvm/Analysis/InlineAdvisor.h:202
Parameters
- llvm::Module& M
- llvm::FunctionAnalysisManager& FAM
- Optional<llvm::InlineContext> IC = NoneType::None
¶std::unique_ptr<InlineAdvice> getAdvice(
llvm::CallBase& CB,
bool MandatoryOnly = false)
std::unique_ptr<InlineAdvice> getAdvice(
llvm::CallBase& CB,
bool MandatoryOnly = false)
Description
Get an InlineAdvice containing a recommendation on whether to inline or not. \p CB is assumed to be a direct call. \p FAM is assumed to be up-to-date wrt previous inlining decisions. \p MandatoryOnly indicates only mandatory (always-inline) call sites should be recommended - this allows the InlineAdvisor track such inlininings. Returns: - An InlineAdvice with the inlining recommendation. - Null when no recommendation is made (https://reviews.llvm.org/D110658). TODO: Consider removing the Null return scenario by incorporating the SampleProfile inliner into an InlineAdvisor
Declared at: llvm/include/llvm/Analysis/InlineAdvisor.h:178
Parameters
- llvm::CallBase& CB
- bool MandatoryOnly = false
¶virtual std::unique_ptr<InlineAdvice>
getAdviceImpl(llvm::CallBase& CB)
virtual std::unique_ptr<InlineAdvice>
getAdviceImpl(llvm::CallBase& CB)
Declared at: llvm/include/llvm/Analysis/InlineAdvisor.h:204
Parameters
- llvm::CallBase& CB
¶const char* getAnnotatedInlinePassName() const
const char* getAnnotatedInlinePassName() const
Description
NOTE pass name is annotated only when inline advisor constructor provides InlineContext.
Declared at: llvm/include/llvm/Analysis/InlineAdvisor.h:197
¶llvm::OptimizationRemarkEmitter& getCallerORE(
llvm::CallBase& CB)
llvm::OptimizationRemarkEmitter& getCallerORE(
llvm::CallBase& CB)
Declared at: llvm/include/llvm/Analysis/InlineAdvisor.h:220
Parameters
- llvm::CallBase& CB
¶virtual std::unique_ptr<InlineAdvice>
getMandatoryAdvice(llvm::CallBase& CB,
bool Advice)
virtual std::unique_ptr<InlineAdvice>
getMandatoryAdvice(llvm::CallBase& CB,
bool Advice)
Declared at: llvm/include/llvm/Analysis/InlineAdvisor.h:205
Parameters
- llvm::CallBase& CB
- bool Advice
¶static llvm::InlineAdvisor::MandatoryInliningKind
getMandatoryKind(
llvm::CallBase& CB,
llvm::FunctionAnalysisManager& FAM,
llvm::OptimizationRemarkEmitter& ORE)
static llvm::InlineAdvisor::MandatoryInliningKind
getMandatoryKind(
llvm::CallBase& CB,
llvm::FunctionAnalysisManager& FAM,
llvm::OptimizationRemarkEmitter& ORE)
Declared at: llvm/include/llvm/Analysis/InlineAdvisor.h:216
Parameters
¶virtual void onPassEntry(
LazyCallGraph::SCC* SCC = nullptr)
virtual void onPassEntry(
LazyCallGraph::SCC* SCC = nullptr)
Description
This must be called when the Inliner pass is entered, to allow the InlineAdvisor update internal state, as result of function passes run between Inliner pass runs (for the same module).
Declared at: llvm/include/llvm/Analysis/InlineAdvisor.h:184
Parameters
- LazyCallGraph::SCC* SCC = nullptr
¶virtual void onPassExit(
LazyCallGraph::SCC* SCC = nullptr)
virtual void onPassExit(
LazyCallGraph::SCC* SCC = nullptr)
Description
This must be called when the Inliner pass is exited, as function passes may be run subsequently. This allows an implementation of InlineAdvisor to prepare for a partial update, based on the optional SCC.
Declared at: llvm/include/llvm/Analysis/InlineAdvisor.h:189
Parameters
- LazyCallGraph::SCC* SCC = nullptr
¶virtual void print(llvm::raw_ostream& OS) const
virtual void print(llvm::raw_ostream& OS) const
Description
Support for printer pass
Declared at: llvm/include/llvm/Analysis/InlineAdvisor.h:192
Parameters
¶virtual ~InlineAdvisor()
virtual ~InlineAdvisor()
Declared at: llvm/include/llvm/Analysis/InlineAdvisor.h:166