LLVM: llvm::ProfileSummaryInfo Class Reference (original) (raw)
Analysis providing profile information. More...
#include "[llvm/Analysis/ProfileSummaryInfo.h](ProfileSummaryInfo%5F8h%5Fsource.html)"
| Public Member Functions | |
|---|---|
| ProfileSummaryInfo (const Module &M) | |
| ProfileSummaryInfo (ProfileSummaryInfo &&Arg)=default | |
| LLVM_ABI void | refresh (std::unique_ptr< ProfileSummary > &&Other=nullptr) |
| If a summary is provided as argument, use that. | |
| bool | hasProfileSummary () const |
| Returns true if profile summary is available. | |
| bool | hasSampleProfile () const |
| Returns true if module M has sample profile. | |
| bool | hasInstrumentationProfile () const |
| Returns true if module M has instrumentation profile. | |
| bool | hasCSInstrumentationProfile () const |
| Returns true if module M has context sensitive instrumentation profile. | |
| bool | invalidate (Module &, const PreservedAnalyses &, ModuleAnalysisManager::Invalidator &) |
| Handle the invalidation of this information. | |
| LLVM_ABI std::optional< uint64_t > | getProfileCount (const CallBase &CallInst, BlockFrequencyInfo *BFI, bool AllowSynthetic=false) const |
| Returns the profile count for CallInst. | |
| LLVM_ABI bool | hasPartialSampleProfile () const |
| Returns true if module M has partial-profile sample profile. | |
| LLVM_ABI bool | hasHugeWorkingSetSize () const |
| Returns true if the working set size of the code is considered huge. | |
| LLVM_ABI bool | hasLargeWorkingSetSize () const |
| Returns true if the working set size of the code is considered large. | |
| template | |
| bool | isFunctionEntryHot (const FuncT *F) const |
| Returns true if F has hot function entry. | |
| template<typename FuncT, typename BFIT> | |
| bool | isFunctionHotInCallGraph (const FuncT *F, BFIT &BFI) const |
| Returns true if F contains hot code. | |
| LLVM_ABI bool | isFunctionEntryCold (const Function *F) const |
| Returns true if F has cold function entry. | |
| template<typename FuncT, typename BFIT> | |
| bool | isFunctionColdInCallGraph (const FuncT *F, BFIT &BFI) const |
| Returns true if F contains only cold code. | |
| LLVM_ABI bool | isFunctionHotnessUnknown (const Function &F) const |
| Returns true if the hotness of F is unknown. | |
| template<typename FuncT, typename BFIT> | |
| bool | isFunctionHotInCallGraphNthPercentile (int PercentileCutoff, const FuncT *F, BFIT &BFI) const |
| Returns true if F contains hot code with regard to a given hot percentile cutoff value. | |
| template<typename FuncT, typename BFIT> | |
| bool | isFunctionColdInCallGraphNthPercentile (int PercentileCutoff, const FuncT *F, BFIT &BFI) const |
| Returns true if F contains cold code with regard to a given cold percentile cutoff value. | |
| LLVM_ABI bool | isHotCount (uint64_t C) const |
| Returns true if count C is considered hot. | |
| LLVM_ABI bool | isColdCount (uint64_t C) const |
| Returns true if count C is considered cold. | |
| LLVM_ABI bool | isHotCountNthPercentile (int PercentileCutoff, uint64_t C) const |
| Returns true if count C is considered hot with regard to a given hot percentile cutoff value. | |
| LLVM_ABI bool | isColdCountNthPercentile (int PercentileCutoff, uint64_t C) const |
| Returns true if count C is considered cold with regard to a given cold percentile cutoff value. | |
| template<typename BBType, typename BFIT> | |
| bool | isHotBlock (const BBType *BB, BFIT *BFI) const |
| Returns true if BasicBlock BB is considered hot. | |
| template<typename BBType, typename BFIT> | |
| bool | isColdBlock (const BBType *BB, BFIT *BFI) const |
| Returns true if BasicBlock BB is considered cold. | |
| template | |
| bool | isColdBlock (BlockFrequency BlockFreq, const BFIT *BFI) const |
| template<typename BBType, typename BFIT> | |
| bool | isHotBlockNthPercentile (int PercentileCutoff, const BBType *BB, BFIT *BFI) const |
| template | |
| bool | isHotBlockNthPercentile (int PercentileCutoff, BlockFrequency BlockFreq, BFIT *BFI) const |
| template<typename BBType, typename BFIT> | |
| bool | isColdBlockNthPercentile (int PercentileCutoff, const BBType *BB, BFIT *BFI) const |
| Returns true if BasicBlock BB is considered cold with regard to a given cold percentile cutoff value. | |
| template | |
| bool | isColdBlockNthPercentile (int PercentileCutoff, BlockFrequency BlockFreq, BFIT *BFI) const |
| LLVM_ABI bool | isHotCallSite (const CallBase &CB, BlockFrequencyInfo *BFI) const |
| Returns true if the call site CB is considered hot. | |
| LLVM_ABI bool | isColdCallSite (const CallBase &CB, BlockFrequencyInfo *BFI) const |
| Returns true if call site CB is considered cold. | |
| LLVM_ABI uint64_t | getOrCompHotCountThreshold () const |
| Returns HotCountThreshold if set. | |
| LLVM_ABI uint64_t | getOrCompColdCountThreshold () const |
| Returns ColdCountThreshold if set. | |
| uint64_t | getHotCountThreshold () const |
| Returns HotCountThreshold if set. | |
| uint64_t | getColdCountThreshold () const |
| Returns ColdCountThreshold if set. |
Analysis providing profile information.
This is an immutable analysis pass that provides ability to query global (program-level) profile information. The main APIs are isHotCount and isColdCount that tells whether a given profile count is considered hot/cold based on the profile summary. This also provides convenience methods to check whether a function is hot or cold.
Definition at line 42 of file ProfileSummaryInfo.h.
| llvm::ProfileSummaryInfo::ProfileSummaryInfo ( const Module & M) | inline |
|---|
◆ ProfileSummaryInfo() [2/2]
◆ getColdCountThreshold()
| uint64_t llvm::ProfileSummaryInfo::getColdCountThreshold ( ) const | inline |
|---|
◆ getHotCountThreshold()
| uint64_t llvm::ProfileSummaryInfo::getHotCountThreshold ( ) const | inline |
|---|
◆ getOrCompColdCountThreshold()
| uint64_t ProfileSummaryInfo::getOrCompColdCountThreshold | ( | ) | const |
|---|
◆ getOrCompHotCountThreshold()
| uint64_t ProfileSummaryInfo::getOrCompHotCountThreshold | ( | ) | const |
|---|
◆ getProfileCount()
◆ hasCSInstrumentationProfile()
| bool llvm::ProfileSummaryInfo::hasCSInstrumentationProfile ( ) const | inline |
|---|
◆ hasHugeWorkingSetSize()
| bool ProfileSummaryInfo::hasHugeWorkingSetSize | ( | ) | const |
|---|
◆ hasInstrumentationProfile()
| bool llvm::ProfileSummaryInfo::hasInstrumentationProfile ( ) const | inline |
|---|
◆ hasLargeWorkingSetSize()
| bool ProfileSummaryInfo::hasLargeWorkingSetSize | ( | ) | const |
|---|
◆ hasPartialSampleProfile()
| bool ProfileSummaryInfo::hasPartialSampleProfile | ( | ) | const |
|---|
◆ hasProfileSummary()
| bool llvm::ProfileSummaryInfo::hasProfileSummary ( ) const | inline |
|---|
Returns true if profile summary is available.
Definition at line 72 of file ProfileSummaryInfo.h.
Referenced by hasCSInstrumentationProfile(), hasInstrumentationProfile(), hasPartialSampleProfile(), hasSampleProfile(), isFunctionColdInCallGraph(), isFunctionEntryCold(), isFunctionEntryHot(), isFunctionHotInCallGraph(), refresh(), llvm::InstructionCombiningPass::runOnFunction(), llvm::shouldFuncOptimizeForSizeImpl(), llvm::shouldOptimizeForSizeImpl(), and shouldRunOnFunction().
◆ hasSampleProfile()
| bool llvm::ProfileSummaryInfo::hasSampleProfile ( ) const | inline |
|---|
◆ invalidate()
Handle the invalidation of this information.
When used as a result of [ProfileSummaryAnalysis](classllvm%5F1%5F1ProfileSummaryAnalysis.html "An analysis pass based on the new PM to deliver ProfileSummaryInfo.") this method will be called when the module this was computed for changes. Since profile summary is immutable after it is annotated on the module, we return false here.
Definition at line 98 of file ProfileSummaryInfo.h.
◆ isColdBlock() [1/2]
◆ isColdBlock() [2/2]
template<typename BBType, typename BFIT>
| bool llvm::ProfileSummaryInfo::isColdBlock ( const BBType * BB, BFIT * BFI ) const | inline |
|---|
◆ isColdBlockNthPercentile() [1/2]
template
| bool llvm::ProfileSummaryInfo::isColdBlockNthPercentile ( int PercentileCutoff, BlockFrequency BlockFreq, BFIT * BFI ) const | inline |
|---|
◆ isColdBlockNthPercentile() [2/2]
template<typename BBType, typename BFIT>
| bool llvm::ProfileSummaryInfo::isColdBlockNthPercentile ( int PercentileCutoff, const BBType * BB, BFIT * BFI ) const | inline |
|---|
◆ isColdCallSite()
◆ isColdCount()
◆ isColdCountNthPercentile()
| bool ProfileSummaryInfo::isColdCountNthPercentile | ( | int | PercentileCutoff, |
|---|---|---|---|
| uint64_t | C ) const |
Returns true if count C is considered cold with regard to a given cold percentile cutoff value.
PercentileCutoff is encoded as a 6 digit decimal fixed point number, where the first two digits are the whole part. E.g. 995000 for 99.5 percentile.
Definition at line 205 of file ProfileSummaryInfo.cpp.
References llvm::CallingConv::C, and PercentileCutoff.
Referenced by isColdBlock().
◆ isFunctionColdInCallGraph()
template<typename FuncT, typename BFIT>
| bool llvm::ProfileSummaryInfo::isFunctionColdInCallGraph ( const FuncT * F, BFIT & BFI ) const | inline |
|---|
◆ isFunctionColdInCallGraphNthPercentile()
template<typename FuncT, typename BFIT>
| bool llvm::ProfileSummaryInfo::isFunctionColdInCallGraphNthPercentile ( int PercentileCutoff, const FuncT * F, BFIT & BFI ) const | inline |
|---|
◆ isFunctionEntryCold()
◆ isFunctionEntryHot()
template
| bool llvm::ProfileSummaryInfo::isFunctionEntryHot ( const FuncT * F) const | inline |
|---|
◆ isFunctionHotInCallGraph()
template<typename FuncT, typename BFIT>
| bool llvm::ProfileSummaryInfo::isFunctionHotInCallGraph ( const FuncT * F, BFIT & BFI ) const | inline |
|---|
◆ isFunctionHotInCallGraphNthPercentile()
template<typename FuncT, typename BFIT>
| bool llvm::ProfileSummaryInfo::isFunctionHotInCallGraphNthPercentile ( int PercentileCutoff, const FuncT * F, BFIT & BFI ) const | inline |
|---|
◆ isFunctionHotnessUnknown()
◆ isHotBlock()
template<typename BBType, typename BFIT>
| bool llvm::ProfileSummaryInfo::isHotBlock ( const BBType * BB, BFIT * BFI ) const | inline |
|---|
◆ isHotBlockNthPercentile() [1/2]
template
| bool llvm::ProfileSummaryInfo::isHotBlockNthPercentile ( int PercentileCutoff, BlockFrequency BlockFreq, BFIT * BFI ) const | inline |
|---|
◆ isHotBlockNthPercentile() [2/2]
template<typename BBType, typename BFIT>
| bool llvm::ProfileSummaryInfo::isHotBlockNthPercentile ( int PercentileCutoff, const BBType * BB, BFIT * BFI ) const | inline |
|---|
◆ isHotCallSite()
◆ isHotCount()
◆ isHotCountNthPercentile()
| bool ProfileSummaryInfo::isHotCountNthPercentile | ( | int | PercentileCutoff, |
|---|---|---|---|
| uint64_t | C ) const |
◆ refresh()
| void ProfileSummaryInfo::refresh | ( | std::unique_ptr< ProfileSummary > && | Other = nullptr | ) |
|---|
The documentation for this class was generated from the following files:
- include/llvm/Analysis/ProfileSummaryInfo.h
- lib/Analysis/ProfileSummaryInfo.cpp