class RegionInfoBase

Declaration

template <class Tr>
class RegionInfoBase { /* full declaration omitted */ };

Description

Analysis that detects all canonical Regions. The RegionInfo pass detects all canonical regions in a function. The Regions are connected using the parent relation. This builds a Program Structure Tree.

Declared at: llvm/include/llvm/Analysis/RegionInfo.h:674

Templates

Tr

Member Variables

private llvm::RegionInfoBase::DomTreeT* DT
private llvm::RegionInfoBase::PostDomTreeT* PDT
private llvm::RegionInfoBase::DomFrontierT* DF
private llvm::RegionInfoBase::RegionT* TopLevelRegion = nullptr
The top level region.
private llvm::RegionInfoBase::BBtoRegionMap BBtoRegion
Map every BB to the smallest region, that contains BB.
public static bool VerifyRegionInfo
public static typename RegionT::PrintStyle printStyle

Method Overview

  • private RegionInfoBase<RegionTr>(RegionInfoBase<RegionTr> && Arg)
  • public RegionInfoBase<RegionTr>(const RegionInfoBase<RegionTr> &)
  • private RegionInfoBase<RegionTr>()
  • private void buildRegionsTree(llvm::RegionInfoBase::DomTreeNodeT * N, llvm::RegionInfoBase::RegionT * region)
  • private void calculate(llvm::RegionInfoBase::FuncT & F)
  • public void clearNodeCache()
  • private llvm::RegionInfoBase::RegionT * createRegion(llvm::RegionInfoBase::BlockT * entry, llvm::RegionInfoBase::BlockT * exit)
  • public void dump() const
  • private void findRegionsWithEntry(llvm::RegionInfoBase::BlockT * entry, llvm::RegionInfoBase::BBtoBBMap * ShortCut)
  • public llvm::RegionInfoBase::RegionT * getCommonRegion(llvm::RegionInfoBase::RegionT * A, llvm::RegionInfoBase::RegionT * B) const
  • public llvm::RegionInfoBase::RegionT * getCommonRegion(llvm::RegionInfoBase::BlockT * A, llvm::RegionInfoBase::BlockT * B) const
  • public llvm::RegionInfoBase::RegionT * getCommonRegion(SmallVectorImpl<llvm::RegionInfoBase::BlockT *> & BBs) const
  • public llvm::RegionInfoBase::RegionT * getCommonRegion(SmallVectorImpl<llvm::RegionInfoBase::RegionT *> & Regions) const
  • public llvm::RegionInfoBase::BlockT * getMaxRegionExit(llvm::RegionInfoBase::BlockT * BB) const
  • private llvm::RegionInfoBase::DomTreeNodeT * getNextPostDom(llvm::RegionInfoBase::DomTreeNodeT * N, llvm::RegionInfoBase::BBtoBBMap * ShortCut) const
  • public llvm::RegionInfoBase::RegionT * getRegionFor(llvm::RegionInfoBase::BlockT * BB) const
  • public llvm::RegionInfoBase::RegionT * getTopLevelRegion() const
  • private llvm::RegionInfoBase::RegionT * getTopMostParent(llvm::RegionInfoBase::RegionT * region)
  • private void insertShortCut(llvm::RegionInfoBase::BlockT * entry, llvm::RegionInfoBase::BlockT * exit, llvm::RegionInfoBase::BBtoBBMap * ShortCut) const
  • private bool isCommonDomFrontier(llvm::RegionInfoBase::BlockT * BB, llvm::RegionInfoBase::BlockT * entry, llvm::RegionInfoBase::BlockT * exit) const
  • private bool isRegion(llvm::RegionInfoBase::BlockT * entry, llvm::RegionInfoBase::BlockT * exit) const
  • private bool isTrivialRegion(llvm::RegionInfoBase::BlockT * entry, llvm::RegionInfoBase::BlockT * exit) const
  • public void print(llvm::raw_ostream & OS) const
  • public void releaseMemory()
  • private void scanForRegions(llvm::RegionInfoBase::FuncT & F, llvm::RegionInfoBase::BBtoBBMap * ShortCut)
  • public void setRegionFor(llvm::RegionInfoBase::BlockT * BB, llvm::RegionInfoBase::RegionT * R)
  • protected template <typename TheRegionT>void updateRegionTree(llvm::RegionInfoBase::RegionInfoT & RI, TheRegionT * R)
  • private virtual void updateStatistics(llvm::RegionInfoBase::RegionT * R)
  • public void verifyAnalysis() const
  • private void verifyBBMap(const llvm::RegionInfoBase::RegionT * SR) const
  • private void wipe()
  • private virtual ~RegionInfoBase<RegionTr>()

Methods

RegionInfoBase<RegionTr>(
    RegionInfoBase<RegionTr>&& Arg)

Declared at: llvm/include/llvm/Analysis/RegionInfo.h:696

Parameters

RegionInfoBase<RegionTr>&& Arg

RegionInfoBase<RegionTr>(
    const RegionInfoBase<RegionTr>&)

Declared at: llvm/include/llvm/Analysis/RegionInfo.h:799

Parameters

const RegionInfoBase<RegionTr>&

RegionInfoBase<RegionTr>()

Declared at: llvm/include/llvm/Analysis/RegionInfo.h:694

void buildRegionsTree(
    llvm::RegionInfoBase::DomTreeNodeT* N,
    llvm::RegionInfoBase::RegionT* region)

Declared at: llvm/include/llvm/Analysis/RegionInfo.h:790

Parameters

llvm::RegionInfoBase::DomTreeNodeT* N
llvm::RegionInfoBase::RegionT* region

void calculate(llvm::RegionInfoBase::FuncT& F)

Declared at: llvm/include/llvm/Analysis/RegionInfo.h:796

Parameters

llvm::RegionInfoBase::FuncT& F

void clearNodeCache()

Description

Clear the Node Cache for all Regions.

Declared at: llvm/include/llvm/Analysis/RegionInfo.h:871

llvm::RegionInfoBase::RegionT* createRegion(
    llvm::RegionInfoBase::BlockT* entry,
    llvm::RegionInfoBase::BlockT* exit)

Declared at: llvm/include/llvm/Analysis/RegionInfo.h:778

Parameters

llvm::RegionInfoBase::BlockT* entry
llvm::RegionInfoBase::BlockT* exit

void dump() const

Declared at: llvm/include/llvm/Analysis/RegionInfo.h:807

void findRegionsWithEntry(
    llvm::RegionInfoBase::BlockT* entry,
    llvm::RegionInfoBase::BBtoBBMap* ShortCut)

Declared at: llvm/include/llvm/Analysis/RegionInfo.h:781

Parameters

llvm::RegionInfoBase::BlockT* entry
llvm::RegionInfoBase::BBtoBBMap* ShortCut

llvm::RegionInfoBase::RegionT* getCommonRegion(
    llvm::RegionInfoBase::RegionT* A,
    llvm::RegionInfoBase::RegionT* B) const

Description

Find the smallest region that contains two regions.

Declared at: llvm/include/llvm/Analysis/RegionInfo.h:843

Parameters

llvm::RegionInfoBase::RegionT* A
The first region.
llvm::RegionInfoBase::RegionT* B
The second region.

Returns

The smallest region containing A and B.

llvm::RegionInfoBase::RegionT* getCommonRegion(
    llvm::RegionInfoBase::BlockT* A,
    llvm::RegionInfoBase::BlockT* B) const

Description

Find the smallest region that contains two basic blocks.

Declared at: llvm/include/llvm/Analysis/RegionInfo.h:850

Parameters

llvm::RegionInfoBase::BlockT* A
The first basic block.
llvm::RegionInfoBase::BlockT* B
The second basic block.

Returns

The smallest region that contains A and B.

llvm::RegionInfoBase::RegionT* getCommonRegion(
    SmallVectorImpl<
        llvm::RegionInfoBase::BlockT*>& BBs) const

Description

Find the smallest region that contains a set of basic blocks.

Declared at: llvm/include/llvm/Analysis/RegionInfo.h:864

Parameters

SmallVectorImpl<llvm::RegionInfoBase::BlockT*>& BBs
A vector of basic blocks.

Returns

The smallest region that contains all basic blocks in BBS.

llvm::RegionInfoBase::RegionT* getCommonRegion(
    SmallVectorImpl<
        llvm::RegionInfoBase::RegionT*>& Regions)
    const

Description

Find the smallest region that contains a set of regions.

Declared at: llvm/include/llvm/Analysis/RegionInfo.h:858

Parameters

SmallVectorImpl<llvm::RegionInfoBase::RegionT*>& Regions
A vector of regions.

Returns

The smallest region that contains all regions in Regions.

llvm::RegionInfoBase::BlockT* getMaxRegionExit(
    llvm::RegionInfoBase::BlockT* BB) const

Description

Return the exit of the maximal refined region, that starts at a BasicBlock.

Declared at: llvm/include/llvm/Analysis/RegionInfo.h:836

Parameters

llvm::RegionInfoBase::BlockT* BB
The BasicBlock the refined region starts.

llvm::RegionInfoBase::DomTreeNodeT*
getNextPostDom(
    llvm::RegionInfoBase::DomTreeNodeT* N,
    llvm::RegionInfoBase::BBtoBBMap* ShortCut)
    const

Declared at: llvm/include/llvm/Analysis/RegionInfo.h:772

Parameters

llvm::RegionInfoBase::DomTreeNodeT* N
llvm::RegionInfoBase::BBtoBBMap* ShortCut

llvm::RegionInfoBase::RegionT* getRegionFor(
    llvm::RegionInfoBase::BlockT* BB) const

Description

Get the smallest region that contains a BasicBlock.

Declared at: llvm/include/llvm/Analysis/RegionInfo.h:817

Parameters

llvm::RegionInfoBase::BlockT* BB
The basic block.

Returns

The smallest region, that contains BB or NULL, if there is no region containing BB.

llvm::RegionInfoBase::RegionT* getTopLevelRegion()
    const

Declared at: llvm/include/llvm/Analysis/RegionInfo.h:866

llvm::RegionInfoBase::RegionT* getTopMostParent(
    llvm::RegionInfoBase::RegionT* region)

Declared at: llvm/include/llvm/Analysis/RegionInfo.h:787

Parameters

llvm::RegionInfoBase::RegionT* region

void insertShortCut(
    llvm::RegionInfoBase::BlockT* entry,
    llvm::RegionInfoBase::BlockT* exit,
    llvm::RegionInfoBase::BBtoBBMap* ShortCut)
    const

Declared at: llvm/include/llvm/Analysis/RegionInfo.h:768

Parameters

llvm::RegionInfoBase::BlockT* entry
llvm::RegionInfoBase::BlockT* exit
llvm::RegionInfoBase::BBtoBBMap* ShortCut

bool isCommonDomFrontier(
    llvm::RegionInfoBase::BlockT* BB,
    llvm::RegionInfoBase::BlockT* entry,
    llvm::RegionInfoBase::BlockT* exit) const

Declared at: llvm/include/llvm/Analysis/RegionInfo.h:760

Parameters

llvm::RegionInfoBase::BlockT* BB
llvm::RegionInfoBase::BlockT* entry
llvm::RegionInfoBase::BlockT* exit

bool isRegion(
    llvm::RegionInfoBase::BlockT* entry,
    llvm::RegionInfoBase::BlockT* exit) const

Declared at: llvm/include/llvm/Analysis/RegionInfo.h:764

Parameters

llvm::RegionInfoBase::BlockT* entry
llvm::RegionInfoBase::BlockT* exit

bool isTrivialRegion(
    llvm::RegionInfoBase::BlockT* entry,
    llvm::RegionInfoBase::BlockT* exit) const

Declared at: llvm/include/llvm/Analysis/RegionInfo.h:775

Parameters

llvm::RegionInfoBase::BlockT* entry
llvm::RegionInfoBase::BlockT* exit

void print(llvm::raw_ostream& OS) const

Declared at: llvm/include/llvm/Analysis/RegionInfo.h:805

Parameters

llvm::raw_ostream& OS

void releaseMemory()

Declared at: llvm/include/llvm/Analysis/RegionInfo.h:810

void scanForRegions(
    llvm::RegionInfoBase::FuncT& F,
    llvm::RegionInfoBase::BBtoBBMap* ShortCut)

Declared at: llvm/include/llvm/Analysis/RegionInfo.h:784

Parameters

llvm::RegionInfoBase::FuncT& F
llvm::RegionInfoBase::BBtoBBMap* ShortCut

void setRegionFor(
    llvm::RegionInfoBase::BlockT* BB,
    llvm::RegionInfoBase::RegionT* R)

Description

Set the smallest region that surrounds a basic block.

Declared at: llvm/include/llvm/Analysis/RegionInfo.h:823

Parameters

llvm::RegionInfoBase::BlockT* BB
The basic block surrounded by a region.
llvm::RegionInfoBase::RegionT* R
The smallest region that surrounds BB.

template <typename TheRegionT>
void updateRegionTree(
    llvm::RegionInfoBase::RegionInfoT& RI,
    TheRegionT* R)

Description

Update refences to a RegionInfoT held by the RegionT managed here This is a post-move helper. Regions hold references to the owning RegionInfo object. After a move these need to be fixed.

Declared at: llvm/include/llvm/Analysis/RegionInfo.h:731

Templates

TheRegionT

Parameters

llvm::RegionInfoBase::RegionInfoT& RI
TheRegionT* R

virtual void updateStatistics(
    llvm::RegionInfoBase::RegionT* R)

Declared at: llvm/include/llvm/Analysis/RegionInfo.h:793

Parameters

llvm::RegionInfoBase::RegionT* R

void verifyAnalysis() const

Declared at: llvm/include/llvm/Analysis/RegionInfo.h:876

void verifyBBMap(
    const llvm::RegionInfoBase::RegionT* SR) const

Declared at: llvm/include/llvm/Analysis/RegionInfo.h:755

Parameters

const llvm::RegionInfoBase::RegionT* SR

void wipe()

Description

Wipe this region tree's state without releasing any resources. This is essentially a post-move helper only. It leaves the object in an assignable and destroyable state, but otherwise invalid.

Declared at: llvm/include/llvm/Analysis/RegionInfo.h:744

virtual ~RegionInfoBase<RegionTr>()

Declared at: llvm/include/llvm/Analysis/RegionInfo.h:713