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: