class OptimizationRemarkEmitter
Declaration
class OptimizationRemarkEmitter { /* full declaration omitted */ };
Description
The optimization diagnostic interface. It allows reporting when optimizations are performed and when they are not along with the reasons for it. Hotness information of the corresponding code region can be included in the remark if DiagnosticsHotnessRequested is enabled in the LLVM context.
Declared at: llvm/include/llvm/Analysis/OptimizationRemarkEmitter.h:37
Method Overview
- public OptimizationRemarkEmitter(const llvm::Function * F, llvm::BlockFrequencyInfo * BFI)
- public OptimizationRemarkEmitter(const llvm::Function * F)
- public OptimizationRemarkEmitter(llvm::OptimizationRemarkEmitter && Arg)
- public bool allowExtraAnalysis(llvm::StringRef PassName) const
- public void emit(llvm::DiagnosticInfoOptimizationBase & OptDiag)
- public template <typename T>void emit(T RemarkBuilder, decltype(RemarkBuilder()) * = nullptr)
- public bool invalidate(llvm::Function & F, const llvm::PreservedAnalyses & PA, FunctionAnalysisManager::Invalidator & Inv)
Methods
¶OptimizationRemarkEmitter(
const llvm::Function* F,
llvm::BlockFrequencyInfo* BFI)
OptimizationRemarkEmitter(
const llvm::Function* F,
llvm::BlockFrequencyInfo* BFI)
Declared at: llvm/include/llvm/Analysis/OptimizationRemarkEmitter.h:39
Parameters
- const llvm::Function* F
- llvm::BlockFrequencyInfo* BFI
¶OptimizationRemarkEmitter(const llvm::Function* F)
OptimizationRemarkEmitter(const llvm::Function* F)
Description
This variant can be used to generate ORE on demand (without the analysis pass). Note that this ctor has a very different cost depending on whether F->getContext().getDiagnosticsHotnessRequested() is on or not. If it's off the operation is free. Whereas if DiagnosticsHotnessRequested is on, it is fairly expensive operation since BFI and all its required analyses are computed. This is for example useful for CGSCC passes that can't use function analyses passes in the old PM.
Declared at: llvm/include/llvm/Analysis/OptimizationRemarkEmitter.h:53
Parameters
- const llvm::Function* F
¶OptimizationRemarkEmitter(
llvm::OptimizationRemarkEmitter&& Arg)
OptimizationRemarkEmitter(
llvm::OptimizationRemarkEmitter&& Arg)
Declared at: llvm/include/llvm/Analysis/OptimizationRemarkEmitter.h:55
Parameters
¶bool allowExtraAnalysis(
llvm::StringRef PassName) const
bool allowExtraAnalysis(
llvm::StringRef PassName) const
Description
Whether we allow for extra compile-time budget to perform more analysis to produce fewer false positives. This is useful when reporting missed optimizations. In this case we can use the extra analysis (1) to filter trivial false positives or (2) to provide more context so that non-trivial false positives can be quickly detected by the user.
Declared at: llvm/include/llvm/Analysis/OptimizationRemarkEmitter.h:94
Parameters
- llvm::StringRef PassName
¶void emit(
llvm::DiagnosticInfoOptimizationBase& OptDiag)
void emit(
llvm::DiagnosticInfoOptimizationBase& OptDiag)
Description
Output the remark via the diagnostic handler and to the optimization record file.
Declared at: llvm/include/llvm/Analysis/OptimizationRemarkEmitter.h:70
Parameters
- llvm::DiagnosticInfoOptimizationBase& OptDiag
¶template <typename T>
void emit(T RemarkBuilder,
decltype(RemarkBuilder())* = nullptr)
template <typename T>
void emit(T RemarkBuilder,
decltype(RemarkBuilder())* = nullptr)
Description
Take a lambda that returns a remark which will be emitted. Second argument is only used to restrict this to functions.
Declared at: llvm/include/llvm/Analysis/OptimizationRemarkEmitter.h:75
Templates
- T
Parameters
- T RemarkBuilder
- decltype(RemarkBuilder())* = nullptr
¶bool invalidate(
llvm::Function& F,
const llvm::PreservedAnalyses& PA,
FunctionAnalysisManager::Invalidator& Inv)
bool invalidate(
llvm::Function& F,
const llvm::PreservedAnalyses& PA,
FunctionAnalysisManager::Invalidator& Inv)
Description
Handle invalidation events in the new pass manager.
Declared at: llvm/include/llvm/Analysis/OptimizationRemarkEmitter.h:65
Parameters
- llvm::Function& F
- const llvm::PreservedAnalyses& PA
- FunctionAnalysisManager::Invalidator& Inv