LLVM 17.0.0git
|
BlockFrequencyInfo pass uses BlockFrequencyInfoImpl implementation to estimate IR basic block frequencies. More...
#include "llvm/Analysis/BlockFrequencyInfo.h"
BlockFrequencyInfo pass uses BlockFrequencyInfoImpl implementation to estimate IR basic block frequencies.
Definition at line 37 of file BlockFrequencyInfo.h.
|
default |
BlockFrequencyInfo::BlockFrequencyInfo | ( | const Function & | F, |
const BranchProbabilityInfo & | BPI, | ||
const LoopInfo & | LI | ||
) |
Definition at line 155 of file BlockFrequencyInfo.cpp.
References calculate(), and F.
|
delete |
BlockFrequencyInfo::BlockFrequencyInfo | ( | BlockFrequencyInfo && | Arg | ) |
Definition at line 161 of file BlockFrequencyInfo.cpp.
|
default |
void BlockFrequencyInfo::calculate | ( | const Function & | F, |
const BranchProbabilityInfo & | BPI, | ||
const LoopInfo & | LI | ||
) |
calculate - compute block frequency info for the given function.
Definition at line 185 of file BlockFrequencyInfo.cpp.
References llvm::dbgs(), F, llvm::GVDT_None, print(), llvm::PrintBlockFreq, llvm::PrintBlockFreqFuncName, view(), llvm::ViewBlockFreqFuncName, and ViewBlockFreqPropagationDAG.
Referenced by BlockFrequencyInfo(), and llvm::BlockFrequencyInfoWrapperPass::runOnFunction().
BlockFrequency BlockFrequencyInfo::getBlockFreq | ( | const BasicBlock * | BB | ) | const |
getblockFreq - Return block frequency.
Return 0 if we don't have the information. Please note that initial frequency is equal to ENTRY_FREQ. It means that we should not rely on the value itself, but only on the comparison to the other block frequencies. We do this to avoid using of floating points.
Definition at line 203 of file BlockFrequencyInfo.cpp.
Referenced by llvm::CFGMST< Edge, BBInfo >::buildEdges(), llvm::CodeExtractor::extractCodeRegion(), llvm::InlineFunction(), isColdCallSite(), and updateCallerBFI().
std::optional< uint64_t > BlockFrequencyInfo::getBlockProfileCount | ( | const BasicBlock * | BB, |
bool | AllowSynthetic = false |
||
) | const |
Returns the estimated profile count of BB
.
This computes the relative block frequency of BB
and multiplies it by the enclosing function's count (if available) and returns the value.
Definition at line 208 of file BlockFrequencyInfo.cpp.
References getFunction().
Referenced by fixFuncEntryCount(), and verifyFuncBFI().
const BranchProbabilityInfo * BlockFrequencyInfo::getBPI | ( | ) | const |
Definition at line 265 of file BlockFrequencyInfo.cpp.
uint64_t BlockFrequencyInfo::getEntryFreq | ( | ) | const |
Definition at line 280 of file BlockFrequencyInfo.cpp.
Referenced by llvm::CFGMST< Edge, BBInfo >::buildEdges().
Definition at line 261 of file BlockFrequencyInfo.cpp.
Referenced by getBlockProfileCount(), and getProfileCountFromFreq().
Returns the estimated profile count of Freq
.
This uses the frequency Freq
and multiplies it by the enclosing function's count (if available) and returns the value.
Definition at line 217 of file BlockFrequencyInfo.cpp.
References getFunction().
Referenced by llvm::CodeExtractor::extractCodeRegion().
bool BlockFrequencyInfo::invalidate | ( | Function & | F, |
const PreservedAnalyses & | PA, | ||
FunctionAnalysisManager::Invalidator & | |||
) |
Handle invalidation explicitly.
Definition at line 176 of file BlockFrequencyInfo.cpp.
References llvm::PreservedAnalyses::getChecker().
bool BlockFrequencyInfo::isIrrLoopHeader | ( | const BasicBlock * | BB | ) |
Returns true if BB
is an irreducible loop header block.
Otherwise false.
Definition at line 223 of file BlockFrequencyInfo.cpp.
References assert().
BlockFrequencyInfo & BlockFrequencyInfo::operator= | ( | BlockFrequencyInfo && | RHS | ) |
Definition at line 164 of file BlockFrequencyInfo.cpp.
References releaseMemory(), and RHS.
|
delete |
void BlockFrequencyInfo::print | ( | raw_ostream & | OS | ) | const |
Definition at line 286 of file BlockFrequencyInfo.cpp.
References OS.
Referenced by calculate(), and llvm::BlockFrequencyInfoWrapperPass::print().
raw_ostream & BlockFrequencyInfo::printBlockFreq | ( | raw_ostream & | OS, |
const BasicBlock * | BB | ||
) | const |
Definition at line 275 of file BlockFrequencyInfo.cpp.
References OS.
raw_ostream & BlockFrequencyInfo::printBlockFreq | ( | raw_ostream & | OS, |
const BlockFrequency | Freq | ||
) | const |
Definition at line 269 of file BlockFrequencyInfo.cpp.
References OS.
void BlockFrequencyInfo::releaseMemory | ( | ) |
Definition at line 284 of file BlockFrequencyInfo.cpp.
Referenced by operator=(), and llvm::BlockFrequencyInfoWrapperPass::releaseMemory().
void BlockFrequencyInfo::setBlockFreq | ( | const BasicBlock * | BB, |
uint64_t | Freq | ||
) |
Definition at line 228 of file BlockFrequencyInfo.cpp.
References assert().
Referenced by llvm::CodeExtractor::extractCodeRegion(), llvm::InlineFunction(), and updateCallerBFI().
void BlockFrequencyInfo::setBlockFreqAndScale | ( | const BasicBlock * | ReferenceBB, |
uint64_t | Freq, | ||
SmallPtrSetImpl< BasicBlock * > & | BlocksToScale | ||
) |
Set the frequency of ReferenceBB
to Freq
and scale the frequencies of the blocks in BlocksToScale
such that their frequencies relative to ReferenceBB
remain unchanged.
Definition at line 233 of file BlockFrequencyInfo.cpp.
References assert(), llvm::APInt::getLimitedValue(), and llvm::APInt::udiv().
Referenced by updateCallerBFI().
void BlockFrequencyInfo::verifyMatch | ( | BlockFrequencyInfo & | Other | ) | const |
Definition at line 291 of file BlockFrequencyInfo.cpp.
References llvm::Other.
void BlockFrequencyInfo::view | ( | StringRef | title = "BlockFrequencyDAGs" | ) | const |
Pop up a ghostview window with the current block frequency propagation rendered using dot.
Definition at line 257 of file BlockFrequencyInfo.cpp.
References llvm::ViewGraph().
Referenced by calculate().