LLVM 23.0.0git
llvm::Region Class Reference

#include "llvm/Analysis/RegionInfo.h"

Inheritance diagram for llvm::Region:
[legend]

Public Member Functions

LLVM_ABI Region (BasicBlock *Entry, BasicBlock *Exit, RegionInfo *RI, DominatorTree *DT, Region *Parent=nullptr)
LLVM_ABI ~Region ()
bool operator== (const RegionNode &RN) const
Public Member Functions inherited from llvm::RegionBase< RegionTraits< Function > >
 RegionBase (BlockT *Entry, BlockT *Exit, RegionInfoT *RI, DomTreeT *DT, RegionT *Parent=nullptr)
 Create a new region.
RegionBaseoperator= (const RegionBase &)=delete
 ~RegionBase ()
 Delete the Region and all its subregions.
BlockT * getEntry () const
 Get the entry BasicBlock of the Region.
void replaceEntry (BlockT *BB)
 Replace the entry basic block of the region with the new basic block.
void replaceExit (BlockT *BB)
 Replace the exit basic block of the region with the new basic block.
void replaceEntryRecursive (BlockT *NewEntry)
 Recursively replace the entry basic block of the region.
void replaceExitRecursive (BlockT *NewExit)
 Recursively replace the exit basic block of the region.
BlockT * getExit () const
 Get the exit BasicBlock of the Region.
RegionT * getParent () const
 Get the parent of the Region.
RegionNodeT * getNode () const
 Get the RegionNode representing the current Region.
unsigned getDepth () const
 Get the nesting level of this Region.
bool isTopLevelRegion () const
 Check if a Region is the TopLevel region.
RegionT * getExpandedRegion () const
 Return a new (non-canonical) region, that is obtained by joining this region with its predecessors.
BlockT * getEnteringBlock () const
 Return the first block of this region's single entry edge, if existing.
BlockT * getExitingBlock () const
 Return the first block of this region's single exit edge, if existing.
bool getExitingBlocks (SmallVectorImpl< BlockT * > &Exitings) const
 Collect all blocks of this region's single exit edge, if existing.
bool isSimple () const
 Is this a simple region?
std::string getNameStr () const
 Returns the name of the Region.
RegionInfoT * getRegionInfo () const
 Return the RegionInfo object, that belongs to this Region.
void print (raw_ostream &OS, bool printTree=true, unsigned level=0, PrintStyle Style=PrintNone) const
 Print the region.
void dump () const
 Print the region to stderr.
bool contains (const BlockT *BB) const
 Check if the region contains a BasicBlock.
LoopT * outermostLoopInRegion (LoopT *L) const
 Get the outermost loop in the region that contains a loop.
RegionT * getSubRegionNode (BlockT *BB) const
 Get the subregion that starts at a BasicBlock.
RegionNodeT * getBBNode (BlockT *BB) const
 Get the BasicBlock RegionNode for a BasicBlock.
void addSubRegion (RegionT *SubRegion, bool moveChildren=false)
 Add a new subregion to this Region.
RegionT * removeSubRegion (RegionT *SubRegion)
 Remove a subregion from this Region.
void transferChildrenTo (RegionT *To)
 Move all direct child nodes of this Region to another Region.
void verifyRegion () const
 Verify if the region is a correct region.
void clearNodeCache ()
 Clear the cache for BB RegionNodes.
iterator begin ()
iterator end ()
block_iterator block_begin ()
block_iterator block_end ()
block_range blocks ()
 Returns a range view of the basic blocks in the region.
element_iterator element_begin ()
element_iterator element_end ()
iterator_range< element_iteratorelements ()
Public Member Functions inherited from llvm::RegionNodeBase< RegionTraits< Function > >
BasicBlockgetNodeAs () const
RegiongetNodeAs () const
MachineBasicBlockgetNodeAs () const
MachineRegiongetNodeAs () const
RegionNodeBaseoperator= (const RegionNodeBase &)=delete
RegionTgetParent () const
 Get the parent Region of this RegionNode.
BlockTgetEntry () const
 Get the entry BasicBlock of this RegionNode.
bool isSubRegion () const
 Is this RegionNode a subregion?

Additional Inherited Members

Public Types inherited from llvm::RegionBase< RegionTraits< Function > >
enum  PrintStyle
 PrintStyle - Print region in difference ways. More...
using iterator
using const_iterator
using block_iterator
using const_block_iterator
using block_range
using const_block_range
using element_iterator
using const_element_iterator
Public Types inherited from llvm::RegionNodeBase< RegionTraits< Function > >
using BlockT
using RegionT
Protected Member Functions inherited from llvm::RegionNodeBase< RegionTraits< Function > >
 RegionNodeBase (RegionT *Parent, BlockT *Entry, bool isSubRegion=false)
 Create a RegionNode.

Detailed Description

Definition at line 887 of file RegionInfo.h.

Constructor & Destructor Documentation

◆ Region()

Region::Region ( BasicBlock * Entry,
BasicBlock * Exit,
RegionInfo * RI,
DominatorTree * DT,
Region * Parent = nullptr )

Definition at line 63 of file RegionInfo.cpp.

References Region(), and llvm::RegionBase< RegionTraits< Function > >::RegionBase().

Referenced by Region().

◆ ~Region()

Region::~Region ( )
default

References LLVM_ABI.

Member Function Documentation

◆ operator==()

bool llvm::Region::operator== ( const RegionNode & RN) const
inline

Definition at line 893 of file RegionInfo.h.


The documentation for this class was generated from the following files: