class BranchProbabilityInfo::SccInfo

Declaration

class BranchProbabilityInfo::SccInfo { /* full declaration omitted */ };

Declared at: llvm/include/llvm/Analysis/BranchProbabilityInfo.h:205

Member Variables

private llvm::BranchProbabilityInfo::SccInfo::SccMap SccNums
private llvm::BranchProbabilityInfo::SccInfo:: SccBlockTypeMaps SccBlocks

Method Overview

  • public SccInfo(const llvm::Function & F)
  • private void calculateSccBlockType(const llvm::BasicBlock * BB, int SccNum)
  • public int getSCCNum(const llvm::BasicBlock * BB) const
  • private uint32_t getSccBlockType(const llvm::BasicBlock * BB, int SccNum) const
  • public void getSccEnterBlocks(int SccNum, SmallVectorImpl<llvm::BasicBlock *> & Enters) const
  • public void getSccExitBlocks(int SccNum, SmallVectorImpl<llvm::BasicBlock *> & Exits) const
  • public bool isSCCExitingBlock(const llvm::BasicBlock * BB, int SccNum) const
  • public bool isSCCHeader(const llvm::BasicBlock * BB, int SccNum) const

Methods

SccInfo(const llvm::Function& F)

Declared at: llvm/include/llvm/Analysis/BranchProbabilityInfo.h:231

Parameters

const llvm::Function& F

void calculateSccBlockType(
    const llvm::BasicBlock* BB,
    int SccNum)

Description

Calculates \p BB's type and stores it in internal data structures for future use. Please note that \p BB must belong to SSC with \p SccNum ID.

Declared at: llvm/include/llvm/Analysis/BranchProbabilityInfo.h:264

Parameters

const llvm::BasicBlock* BB
int SccNum

int getSCCNum(const llvm::BasicBlock* BB) const

Description

If \p BB belongs to some SCC then ID of that SCC is returned, otherwise -1 is returned. If \p BB belongs to more than one SCC at the same time result is undefined.

Declared at: llvm/include/llvm/Analysis/BranchProbabilityInfo.h:236

Parameters

const llvm::BasicBlock* BB

uint32_t getSccBlockType(
    const llvm::BasicBlock* BB,
    int SccNum) const

Description

Returns \p BB's type according to classification given by SccBlockType enum. Please note that \p BB must belong to SSC with \p SccNum ID.

Declared at: llvm/include/llvm/Analysis/BranchProbabilityInfo.h:261

Parameters

const llvm::BasicBlock* BB
int SccNum

void getSccEnterBlocks(
    int SccNum,
    SmallVectorImpl<llvm::BasicBlock*>& Enters)
    const

Description

Fills in \p Enters vector with all such blocks that don't belong to SCC with \p SccNum ID but there is an edge to a block belonging to the SCC.

Declared at: llvm/include/llvm/Analysis/BranchProbabilityInfo.h:250

Parameters

int SccNum
SmallVectorImpl<llvm::BasicBlock*>& Enters

void getSccExitBlocks(
    int SccNum,
    SmallVectorImpl<llvm::BasicBlock*>& Exits)
    const

Description

Fills in \p Exits vector with all such blocks that don't belong to SCC with \p SccNum ID but there is an edge from a block belonging to the SCC.

Declared at: llvm/include/llvm/Analysis/BranchProbabilityInfo.h:255

Parameters

int SccNum
SmallVectorImpl<llvm::BasicBlock*>& Exits

bool isSCCExitingBlock(const llvm::BasicBlock* BB,
                       int SccNum) const

Description

Returns true if \p BB is an 'exiting' block in SCC with \p SccNum ID, false otherwise.

Declared at: llvm/include/llvm/Analysis/BranchProbabilityInfo.h:244

Parameters

const llvm::BasicBlock* BB
int SccNum

bool isSCCHeader(const llvm::BasicBlock* BB,
                 int SccNum) const

Description

Returns true if \p BB is a 'header' block in SCC with \p SccNum ID, false otherwise.

Declared at: llvm/include/llvm/Analysis/BranchProbabilityInfo.h:239

Parameters

const llvm::BasicBlock* BB
int SccNum