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)
RegionInfoBase<RegionTr>(
RegionInfoBase<RegionTr>&& Arg)
Declared at: llvm/include/llvm/Analysis/RegionInfo.h:696
Parameters
- RegionInfoBase<RegionTr>&& Arg
¶RegionInfoBase<RegionTr>(
const RegionInfoBase<RegionTr>&)
RegionInfoBase<RegionTr>(
const RegionInfoBase<RegionTr>&)
Declared at: llvm/include/llvm/Analysis/RegionInfo.h:799
Parameters
- const RegionInfoBase<RegionTr>&
¶RegionInfoBase<RegionTr>()
RegionInfoBase<RegionTr>()
Declared at: llvm/include/llvm/Analysis/RegionInfo.h:694
¶void buildRegionsTree(
llvm::RegionInfoBase::DomTreeNodeT* N,
llvm::RegionInfoBase::RegionT* region)
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)
void calculate(llvm::RegionInfoBase::FuncT& F)
Declared at: llvm/include/llvm/Analysis/RegionInfo.h:796
Parameters
- llvm::RegionInfoBase::FuncT& F
¶void clearNodeCache()
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)
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
void dump() const
Declared at: llvm/include/llvm/Analysis/RegionInfo.h:807
¶void findRegionsWithEntry(
llvm::RegionInfoBase::BlockT* entry,
llvm::RegionInfoBase::BBtoBBMap* ShortCut)
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
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
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
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
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
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
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
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
llvm::RegionInfoBase::RegionT* getTopLevelRegion()
const
Declared at: llvm/include/llvm/Analysis/RegionInfo.h:866
¶llvm::RegionInfoBase::RegionT* getTopMostParent(
llvm::RegionInfoBase::RegionT* region)
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
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
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
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
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
void print(llvm::raw_ostream& OS) const
Declared at: llvm/include/llvm/Analysis/RegionInfo.h:805
Parameters
¶void releaseMemory()
void releaseMemory()
Declared at: llvm/include/llvm/Analysis/RegionInfo.h:810
¶void scanForRegions(
llvm::RegionInfoBase::FuncT& F,
llvm::RegionInfoBase::BBtoBBMap* ShortCut)
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)
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)
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)
virtual void updateStatistics(
llvm::RegionInfoBase::RegionT* R)
Declared at: llvm/include/llvm/Analysis/RegionInfo.h:793
Parameters
- llvm::RegionInfoBase::RegionT* R
¶void verifyAnalysis() const
void verifyAnalysis() const
Declared at: llvm/include/llvm/Analysis/RegionInfo.h:876
¶void verifyBBMap(
const llvm::RegionInfoBase::RegionT* SR) const
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()
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>()
virtual ~RegionInfoBase<RegionTr>()
Declared at: llvm/include/llvm/Analysis/RegionInfo.h:713