LLVM 20.0.0git
Public Member Functions | List of all members
llvm::VPDominatorTree Class Reference

Template specialization of the standard LLVM dominator tree utility for VPBlockBases. More...

#include "Transforms/Vectorize/VPlanDominatorTree.h"

Inheritance diagram for llvm::VPDominatorTree:
Inheritance graph
[legend]

Public Member Functions

 VPDominatorTree ()=default
 
bool properlyDominates (const VPRecipeBase *A, const VPRecipeBase *B)
 Returns true if A properly dominates B.
 
- Public Member Functions inherited from llvm::DominatorTreeBase< VPBlockBase, false >
 DominatorTreeBase ()=default
 
 DominatorTreeBase (DominatorTreeBase &&Arg)
 
 DominatorTreeBase (const DominatorTreeBase &)=delete
 
DominatorTreeBaseoperator= (DominatorTreeBase &&RHS)
 
DominatorTreeBaseoperator= (const DominatorTreeBase &)=delete
 
root_iterator root_begin ()
 
const_root_iterator root_begin () const
 
root_iterator root_end ()
 
const_root_iterator root_end () const
 
size_t root_size () const
 
iterator_range< root_iteratorroots ()
 
iterator_range< const_root_iteratorroots () const
 
bool isPostDominator () const
 isPostDominator - Returns true if analysis based of postdoms
 
bool compare (const DominatorTreeBase &Other) const
 compare - Return false if the other dominator tree base matches this dominator tree base.
 
DomTreeNodeBase< VPBlockBase > * getNode (const VPBlockBase *BB) const
 getNode - return the (Post)DominatorTree node for the specified basic block.
 
DomTreeNodeBase< VPBlockBase > * operator[] (const VPBlockBase *BB) const
 See getNode.
 
DomTreeNodeBase< VPBlockBase > * getRootNode ()
 getRootNode - This returns the entry node for the CFG of the function.
 
const DomTreeNodeBase< VPBlockBase > * getRootNode () const
 
void getDescendants (VPBlockBase *R, SmallVectorImpl< VPBlockBase * > &Result) const
 Get all nodes dominated by R, including R itself.
 
bool properlyDominates (const DomTreeNodeBase< VPBlockBase > *A, const DomTreeNodeBase< VPBlockBase > *B) const
 properlyDominates - Returns true iff A dominates B and A != B.
 
bool properlyDominates (const VPBlockBase *A, const VPBlockBase *B) const
 
bool isReachableFromEntry (const VPBlockBase *A) const
 isReachableFromEntry - Return true if A is dominated by the entry block of the function containing it.
 
bool isReachableFromEntry (const DomTreeNodeBase< VPBlockBase > *A) const
 
bool dominates (const DomTreeNodeBase< VPBlockBase > *A, const DomTreeNodeBase< VPBlockBase > *B) const
 dominates - Returns true iff A dominates B.
 
bool dominates (const VPBlockBase *A, const VPBlockBase *B) const
 
VPBlockBasegetRoot () const
 
VPBlockBasefindNearestCommonDominator (VPBlockBase *A, VPBlockBase *B) const
 Find nearest common dominator basic block for basic block A and B.
 
const VPBlockBasefindNearestCommonDominator (const VPBlockBase *A, const VPBlockBase *B) const
 
bool isVirtualRoot (const DomTreeNodeBase< VPBlockBase > *A) const
 
void applyUpdates (ArrayRef< UpdateType > Updates)
 Inform the dominator tree about a sequence of CFG edge insertions and deletions and perform a batch update on the tree.
 
void applyUpdates (ArrayRef< UpdateType > Updates, ArrayRef< UpdateType > PostViewUpdates)
 
void insertEdge (VPBlockBase *From, VPBlockBase *To)
 Inform the dominator tree about a CFG edge insertion and update the tree.
 
void deleteEdge (VPBlockBase *From, VPBlockBase *To)
 Inform the dominator tree about a CFG edge deletion and update the tree.
 
DomTreeNodeBase< VPBlockBase > * addNewBlock (VPBlockBase *BB, VPBlockBase *DomBB)
 Add a new node to the dominator tree information.
 
DomTreeNodeBase< VPBlockBase > * setNewRoot (VPBlockBase *BB)
 Add a new node to the forward dominator tree and make it a new root.
 
void changeImmediateDominator (DomTreeNodeBase< VPBlockBase > *N, DomTreeNodeBase< VPBlockBase > *NewIDom)
 changeImmediateDominator - This method is used to update the dominator tree information when a node's immediate dominator changes.
 
void changeImmediateDominator (VPBlockBase *BB, VPBlockBase *NewBB)
 
void eraseNode (VPBlockBase *BB)
 eraseNode - Removes a node from the dominator tree.
 
void splitBlock (VPBlockBase *NewBB)
 splitBlock - BB is split and now it has one successor.
 
void print (raw_ostream &O) const
 print - Convert to human readable form
 
void updateDFSNumbers () const
 updateDFSNumbers - Assign In and Out numbers to the nodes while walking dominator tree in dfs order.
 
void recalculate (ParentType &Func)
 recalculate - compute a dominator tree for the given function
 
void recalculate (ParentType &Func, ArrayRef< UpdateType > Updates)
 
std::enable_if_t< GraphHasNodeNumbers< T * >, void > updateBlockNumbers ()
 Update dominator tree after renumbering blocks.
 
bool verify (VerificationLevel VL=VerificationLevel::Full) const
 verify - checks if the tree is correct.
 
void reset ()
 

Additional Inherited Members

- Public Types inherited from llvm::DominatorTreeBase< VPBlockBase, false >
enum  VerificationLevel
 
using NodeTrait = DomTreeNodeTraits< VPBlockBase >
 
using NodeType = typename NodeTrait::NodeType
 
using NodePtr = typename NodeTrait::NodePtr
 
using ParentPtr = typename NodeTrait::ParentPtr
 
using ParentType = std::remove_pointer_t< ParentPtr >
 
using UpdateType = cfg::Update< NodePtr >
 
using UpdateKind = cfg::UpdateKind
 
using root_iterator = typename SmallVectorImpl< VPBlockBase * >::iterator
 Iteration over roots.
 
using const_root_iterator = typename SmallVectorImpl< VPBlockBase * >::const_iterator
 
- Static Public Attributes inherited from llvm::DominatorTreeBase< VPBlockBase, false >
static constexpr bool IsPostDominator
 
static constexpr UpdateKind Insert
 
static constexpr UpdateKind Delete
 
- Protected Types inherited from llvm::DominatorTreeBase< VPBlockBase, false >
using DomTreeNodeStorageTy = SmallVector< std::unique_ptr< DomTreeNodeBase< VPBlockBase > > >
 
- Protected Member Functions inherited from llvm::DominatorTreeBase< VPBlockBase, false >
void addRoot (VPBlockBase *BB)
 
void addRoot (MachineBasicBlock *MBB)
 
DomTreeNodeBase< VPBlockBase > * createNode (VPBlockBase *BB, DomTreeNodeBase< VPBlockBase > *IDom=nullptr)
 
void Split (typename GraphTraits< N >::NodeRef NewBB)
 
- Protected Attributes inherited from llvm::DominatorTreeBase< VPBlockBase, false >
SmallVector< VPBlockBase *, IsPostDom ? 4 :1 > Roots
 
DomTreeNodeStorageTy DomTreeNodes
 
std::conditional_t<!GraphHasNodeNumbers< VPBlockBase * >, DenseMap< const VPBlockBase *, unsigned >, std::tuple<> > NodeNumberMap
 
DomTreeNodeBase< VPBlockBase > * RootNode
 
ParentPtr Parent
 
bool DFSInfoValid
 
unsigned int SlowQueries
 
unsigned BlockNumberEpoch
 

Detailed Description

Template specialization of the standard LLVM dominator tree utility for VPBlockBases.

Definition at line 37 of file VPlanDominatorTree.h.

Constructor & Destructor Documentation

◆ VPDominatorTree()

llvm::VPDominatorTree::VPDominatorTree ( )
default

Member Function Documentation

◆ properlyDominates()

bool VPDominatorTree::properlyDominates ( const VPRecipeBase A,
const VPRecipeBase B 
)

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