class BranchProbabilityInfo
Declaration
class BranchProbabilityInfo { /* full declaration omitted */ };
Description
Analysis providing branch probability information. This is a function analysis which provides information on the relative probabilities of each "edge" in the function's CFG where such an edge is defined by a pair (PredBlock and an index in the successors). The probability of an edge from one block is always relative to the probabilities of other edges from the block. The probabilites of all edges from a block sum to exactly one (100%). We use a pair (PredBlock and an index in the successors) to uniquely identify an edge, since we can have multiple edges from Src to Dst. As an example, we can have a switch which jumps to Dst with value 0 and value 10.
Declared at: llvm/include/llvm/Analysis/BranchProbabilityInfo.h:53
Method Overview
- public BranchProbabilityInfo()
- public BranchProbabilityInfo(const llvm::Function & F, const llvm::LoopInfo & LI, const llvm::TargetLibraryInfo * TLI = nullptr)
- public BranchProbabilityInfo(llvm::BranchProbabilityInfo && Arg)
- public BranchProbabilityInfo(const llvm::BranchProbabilityInfo &)
- public void calculate(const llvm::Function & F, const llvm::LoopInfo & LI, const llvm::TargetLibraryInfo * TLI = nullptr)
- public void eraseBlock(const llvm::BasicBlock * BB)
- public static llvm::BranchProbability getBranchProbStackProtector(bool IsLikely)
- public llvm::BranchProbability getEdgeProbability(const llvm::BasicBlock * Src, unsigned int IndexInSuccessors) const
- public llvm::BranchProbability getEdgeProbability(const llvm::BasicBlock * Src, const llvm::BasicBlock * Dst) const
- public llvm::BranchProbability getEdgeProbability(const llvm::BasicBlock * Src, llvm::succ_const_iterator Dst) const
- public const llvm::BasicBlock * getHotSucc(const llvm::BasicBlock * BB) const
- public bool isEdgeHot(const llvm::BasicBlock * Src, const llvm::BasicBlock * Dst) const
- public void print(llvm::raw_ostream & OS) const
- public llvm::raw_ostream & printEdgeProbability(llvm::raw_ostream & OS, const llvm::BasicBlock * Src, const llvm::BasicBlock * Dst) const
- public void releaseMemory()
- public void setEdgeProbability(const llvm::BasicBlock * Src, unsigned int IndexInSuccessors, llvm::BranchProbability Prob)
Methods
¶BranchProbabilityInfo()
BranchProbabilityInfo()
Declared at: llvm/include/llvm/Analysis/BranchProbabilityInfo.h:55
¶BranchProbabilityInfo(
const llvm::Function& F,
const llvm::LoopInfo& LI,
const llvm::TargetLibraryInfo* TLI = nullptr)
BranchProbabilityInfo(
const llvm::Function& F,
const llvm::LoopInfo& LI,
const llvm::TargetLibraryInfo* TLI = nullptr)
Declared at: llvm/include/llvm/Analysis/BranchProbabilityInfo.h:57
Parameters
- const llvm::Function& F
- const llvm::LoopInfo& LI
- const llvm::TargetLibraryInfo* TLI = nullptr
¶BranchProbabilityInfo(
llvm::BranchProbabilityInfo&& Arg)
BranchProbabilityInfo(
llvm::BranchProbabilityInfo&& Arg)
Declared at: llvm/include/llvm/Analysis/BranchProbabilityInfo.h:62
Parameters
¶BranchProbabilityInfo(
const llvm::BranchProbabilityInfo&)
BranchProbabilityInfo(
const llvm::BranchProbabilityInfo&)
Declared at: llvm/include/llvm/Analysis/BranchProbabilityInfo.h:67
Parameters
- const llvm::BranchProbabilityInfo&
¶void calculate(
const llvm::Function& F,
const llvm::LoopInfo& LI,
const llvm::TargetLibraryInfo* TLI = nullptr)
void calculate(
const llvm::Function& F,
const llvm::LoopInfo& LI,
const llvm::TargetLibraryInfo* TLI = nullptr)
Declared at: llvm/include/llvm/Analysis/BranchProbabilityInfo.h:134
Parameters
- const llvm::Function& F
- const llvm::LoopInfo& LI
- const llvm::TargetLibraryInfo* TLI = nullptr
¶void eraseBlock(const llvm::BasicBlock* BB)
void eraseBlock(const llvm::BasicBlock* BB)
Description
Forget analysis results for the given basic block.
Declared at: llvm/include/llvm/Analysis/BranchProbabilityInfo.h:138
Parameters
- const llvm::BasicBlock* BB
¶static llvm::BranchProbability
getBranchProbStackProtector(bool IsLikely)
static llvm::BranchProbability
getBranchProbStackProtector(bool IsLikely)
Declared at: llvm/include/llvm/Analysis/BranchProbabilityInfo.h:129
Parameters
- bool IsLikely
¶llvm::BranchProbability getEdgeProbability(
const llvm::BasicBlock* Src,
unsigned int IndexInSuccessors) const
llvm::BranchProbability getEdgeProbability(
const llvm::BasicBlock* Src,
unsigned int IndexInSuccessors) const
Description
Get an edge's probability, relative to other out-edges of the Src. This routine provides access to the fractional probability between zero (0%) and one (100%) of this edge executing, relative to other edges leaving the 'Src' block. The returned probability is never zero, and can only be one if the source block has only one successor.
Declared at: llvm/include/llvm/Analysis/BranchProbabilityInfo.h:88
Parameters
- const llvm::BasicBlock* Src
- unsigned int IndexInSuccessors
¶llvm::BranchProbability getEdgeProbability(
const llvm::BasicBlock* Src,
const llvm::BasicBlock* Dst) const
llvm::BranchProbability getEdgeProbability(
const llvm::BasicBlock* Src,
const llvm::BasicBlock* Dst) const
Description
Get the probability of going from Src to Dst. It returns the sum of all probabilities for edges from Src to Dst.
Declared at: llvm/include/llvm/Analysis/BranchProbabilityInfo.h:94
Parameters
- const llvm::BasicBlock* Src
- const llvm::BasicBlock* Dst
¶llvm::BranchProbability getEdgeProbability(
const llvm::BasicBlock* Src,
llvm::succ_const_iterator Dst) const
llvm::BranchProbability getEdgeProbability(
const llvm::BasicBlock* Src,
llvm::succ_const_iterator Dst) const
Declared at: llvm/include/llvm/Analysis/BranchProbabilityInfo.h:97
Parameters
- const llvm::BasicBlock* Src
- llvm::succ_const_iterator Dst
¶const llvm::BasicBlock* getHotSucc(
const llvm::BasicBlock* BB) const
const llvm::BasicBlock* getHotSucc(
const llvm::BasicBlock* BB) const
Description
Retrieve the hot successor of a block if one exists. Given a basic block, look through its successors and if one exists for which
Declared at: llvm/include/llvm/Analysis/BranchProbabilityInfo.h:110
Parameters
- const llvm::BasicBlock* BB
¶bool isEdgeHot(const llvm::BasicBlock* Src,
const llvm::BasicBlock* Dst) const
bool isEdgeHot(const llvm::BasicBlock* Src,
const llvm::BasicBlock* Dst) const
Description
Test if an edge is hot relative to other out-edges of the Src. Check whether this edge out of the source block is 'hot'. We define hot as having a relative probability >= 80%.
Declared at: llvm/include/llvm/Analysis/BranchProbabilityInfo.h:104
Parameters
- const llvm::BasicBlock* Src
- const llvm::BasicBlock* Dst
¶void print(llvm::raw_ostream& OS) const
void print(llvm::raw_ostream& OS) const
Declared at: llvm/include/llvm/Analysis/BranchProbabilityInfo.h:80
Parameters
¶llvm::raw_ostream& printEdgeProbability(
llvm::raw_ostream& OS,
const llvm::BasicBlock* Src,
const llvm::BasicBlock* Dst) const
llvm::raw_ostream& printEdgeProbability(
llvm::raw_ostream& OS,
const llvm::BasicBlock* Src,
const llvm::BasicBlock* Dst) const
Description
Print an edge's probability. Retrieves an edge's probability similarly to
Declared at: llvm/include/llvm/Analysis/BranchProbabilityInfo.h:117
Parameters
- llvm::raw_ostream& OS
- const llvm::BasicBlock* Src
- const llvm::BasicBlock* Dst
¶void releaseMemory()
void releaseMemory()
Declared at: llvm/include/llvm/Analysis/BranchProbabilityInfo.h:78
¶void setEdgeProbability(
const llvm::BasicBlock* Src,
unsigned int IndexInSuccessors,
llvm::BranchProbability Prob)
void setEdgeProbability(
const llvm::BasicBlock* Src,
unsigned int IndexInSuccessors,
llvm::BranchProbability Prob)
Description
Set the raw edge probability for the given edge. This allows a pass to explicitly set the edge probability for an edge. It can be used when updating the CFG to update and preserve the branch probability information. Read the implementation of how these edge probabilities are calculated carefully before using!
Declared at: llvm/include/llvm/Analysis/BranchProbabilityInfo.h:126
Parameters
- const llvm::BasicBlock* Src
- unsigned int IndexInSuccessors
- llvm::BranchProbability Prob