LLVM API Documentation
#include <BlockFrequencyInfo.h>
Public Member Functions | |
BlockFrequencyInfo () | |
~BlockFrequencyInfo () | |
void | getAnalysisUsage (AnalysisUsage &AU) const override |
bool | runOnFunction (Function &F) override |
void | releaseMemory () override |
void | print (raw_ostream &O, const Module *M) const override |
const Function * | getFunction () const |
void | view () const |
BlockFrequency | getBlockFreq (const BasicBlock *BB) const |
raw_ostream & | printBlockFreq (raw_ostream &OS, const BlockFrequency Freq) const |
raw_ostream & | printBlockFreq (raw_ostream &OS, const BasicBlock *BB) const |
uint64_t | getEntryFreq () const |
Static Public Attributes | |
static char | ID = 0 |
BlockFrequencyInfo pass uses BlockFrequencyInfoImpl implementation to estimate IR basic block frequencies.
Definition at line 28 of file BlockFrequencyInfo.h.
Definition at line 118 of file BlockFrequencyInfo.cpp.
References llvm::PassRegistry::getPassRegistry(), and llvm::initializeBlockFrequencyInfoPass().
Definition at line 122 of file BlockFrequencyInfo.cpp.
void BlockFrequencyInfo::getAnalysisUsage | ( | AnalysisUsage & | ) | const [override, virtual] |
getAnalysisUsage - This function should be overriden by passes that need analysis information to do their job. If a pass specifies that it uses a particular analysis result to this function, it can then use the getAnalysis<AnalysisType>() function, below.
Reimplemented from llvm::Pass.
Definition at line 124 of file BlockFrequencyInfo.cpp.
References llvm::AnalysisUsage::addRequired(), and llvm::AnalysisUsage::setPreservesAll().
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 149 of file BlockFrequencyInfo.cpp.
References llvm::ARMISD::BFI.
Referenced by llvm::DOTGraphTraits< BlockFrequencyInfo * >::getNodeLabel().
uint64_t BlockFrequencyInfo::getEntryFreq | ( | ) | const |
Definition at line 180 of file BlockFrequencyInfo.cpp.
References llvm::ARMISD::BFI.
const Function * BlockFrequencyInfo::getFunction | ( | ) | const |
Definition at line 165 of file BlockFrequencyInfo.cpp.
References llvm::ARMISD::BFI.
Referenced by llvm::GraphTraits< BlockFrequencyInfo * >::getEntryNode(), llvm::DOTGraphTraits< BlockFrequencyInfo * >::getGraphName(), llvm::GraphTraits< BlockFrequencyInfo * >::nodes_begin(), and llvm::GraphTraits< BlockFrequencyInfo * >::nodes_end().
void BlockFrequencyInfo::print | ( | raw_ostream & | O, |
const Module * | M | ||
) | const [override, virtual] |
print - Print out the internal state of the pass. This is called by Analyze to print out the contents of an analysis. Otherwise it is not necessary to implement this method. Beware that the module pointer MAY be null. This automatically forwards to a virtual function that does not provide the Module* in case the analysis doesn't need it it can just be ignored.
Reimplemented from llvm::Pass.
Definition at line 145 of file BlockFrequencyInfo.cpp.
References llvm::ARMISD::BFI.
raw_ostream & BlockFrequencyInfo::printBlockFreq | ( | raw_ostream & | OS, |
const BlockFrequency | Freq | ||
) | const |
Definition at line 170 of file BlockFrequencyInfo.cpp.
References llvm::ARMISD::BFI.
Referenced by llvm::DOTGraphTraits< BlockFrequencyInfo * >::getNodeLabel().
raw_ostream & BlockFrequencyInfo::printBlockFreq | ( | raw_ostream & | OS, |
const BasicBlock * | BB | ||
) | const |
Definition at line 175 of file BlockFrequencyInfo.cpp.
References llvm::ARMISD::BFI.
void BlockFrequencyInfo::releaseMemory | ( | ) | [override, virtual] |
releaseMemory() - This member can be implemented by a pass if it wants to be able to release its memory when it is no longer needed. The default behavior of passes is to hold onto memory for the entire duration of their lifetime (which is the entire compile time). For pipelined passes, this is not a big deal because that memory gets recycled every time the pass is invoked on another program unit. For IP passes, it is more important to free memory when it is unused.
Optionally implement this function to release pass memory when it is no longer used.
Reimplemented from llvm::Pass.
Definition at line 143 of file BlockFrequencyInfo.cpp.
References llvm::ARMISD::BFI.
bool BlockFrequencyInfo::runOnFunction | ( | Function & | F | ) | [override, virtual] |
runOnFunction - Virtual method overriden by subclasses to do the per-function processing of the pass.
Implements llvm::FunctionPass.
Definition at line 130 of file BlockFrequencyInfo.cpp.
References llvm::ARMISD::BFI, GVDT_None, LI, view(), and ViewBlockFreqPropagationDAG.
void BlockFrequencyInfo::view | ( | ) | const |
Pop up a ghostview window with the current block frequency propagation rendered using dot.
Definition at line 155 of file BlockFrequencyInfo.cpp.
References llvm::errs(), and llvm::ViewGraph().
Referenced by runOnFunction().
block Block Frequency true char BlockFrequencyInfo::ID = 0 [static] |
Definition at line 33 of file BlockFrequencyInfo.h.