LLVM 19.0.0git
Classes | Namespaces | Enumerations | Functions
InlineAdvisor.h File Reference
#include "llvm/Analysis/CGSCCPassManager.h"
#include "llvm/Analysis/InlineCost.h"
#include "llvm/Analysis/LazyCallGraph.h"
#include "llvm/Config/llvm-config.h"
#include "llvm/IR/PassManager.h"
#include <memory>

Go to the source code of this file.

Classes

struct  llvm::InlineContext
 Provides context on when an inline advisor is constructed in the pipeline (e.g., link phase, inline driver). More...
 
class  llvm::InlineAdvice
 Capture state between an inlining decision having had been made, and its impact being observable. More...
 
class  llvm::DefaultInlineAdvice
 
class  llvm::InlineAdvisor
 Interface for deciding whether to inline a call site or not. More...
 
class  llvm::DefaultInlineAdvisor
 The default (manual heuristics) implementation of the InlineAdvisor. More...
 
class  llvm::PluginInlineAdvisorAnalysis
 Used for dynamically registering InlineAdvisors as plugins. More...
 
struct  llvm::PluginInlineAdvisorAnalysis::Result
 
class  llvm::InlineAdvisorAnalysis
 The InlineAdvisorAnalysis is a module pass because the InlineAdvisor needs to capture state right before inlining commences over a module. More...
 
struct  llvm::InlineAdvisorAnalysis::Result
 
class  llvm::InlineAdvisorAnalysisPrinterPass
 Printer pass for the InlineAdvisorAnalysis results. More...
 

Namespaces

namespace  llvm
 This is an optimization pass for GlobalISel generic memory operations.
 

Enumerations

enum class  llvm::InliningAdvisorMode : int { llvm::Default , llvm::Release , llvm::Development }
 There are 4 scenarios we can use the InlineAdvisor: More...
 
enum class  llvm::InlinePass : int {
  llvm::AlwaysInliner , llvm::CGSCCInliner , llvm::EarlyInliner , llvm::ModuleInliner ,
  llvm::MLInliner , llvm::ReplayCGSCCInliner , llvm::ReplaySampleProfileInliner , llvm::SampleProfileInliner
}
 

Functions

std::string llvm::AnnotateInlinePassName (InlineContext IC)
 
std::unique_ptr< InlineAdvisorllvm::getReleaseModeAdvisor (Module &M, ModuleAnalysisManager &MAM, std::function< bool(CallBase &)> GetDefaultAdvice)
 
std::unique_ptr< InlineAdvisor > llvm::getDevelopmentModeAdvisor (Module &M, ModuleAnalysisManager &MAM, std::function< bool(CallBase &)> GetDefaultAdvice)
 
std::optional< InlineCostllvm::shouldInline (CallBase &CB, function_ref< InlineCost(CallBase &CB)> GetInlineCost, OptimizationRemarkEmitter &ORE, bool EnableDeferral=true)
 Return the cost only if the inliner should attempt to inline at the given CallSite.
 
void llvm::emitInlinedInto (OptimizationRemarkEmitter &ORE, DebugLoc DLoc, const BasicBlock *Block, const Function &Callee, const Function &Caller, bool IsMandatory, function_ref< void(OptimizationRemark &)> ExtraContext={}, const char *PassName=nullptr)
 Emit ORE message.
 
void llvm::emitInlinedIntoBasedOnCost (OptimizationRemarkEmitter &ORE, DebugLoc DLoc, const BasicBlock *Block, const Function &Callee, const Function &Caller, const InlineCost &IC, bool ForProfileContext=false, const char *PassName=nullptr)
 Emit ORE message based in cost (default heuristic).
 
void llvm::addLocationToRemarks (OptimizationRemark &Remark, DebugLoc DLoc)
 Add location info to ORE message.
 
void llvm::setInlineRemark (CallBase &CB, StringRef Message)
 Set the inline-remark attribute.
 
std::string llvm::inlineCostStr (const InlineCost &IC)
 Utility for extracting the inline cost message to a string.