LLVM: llvm::VPDominatorTree Class Reference (original) (raw)

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

Public Member Functions

VPDominatorTree (VPlan &Plan)

bool

properlyDominates (const VPRecipeBase *A, const VPRecipeBase *B)

bool

properlyDominates (const DomTreeNodeBase< VPBlockBase > *A, const DomTreeNodeBase< VPBlockBase > *B) const

Returns true if A properly dominates B.

bool

properlyDominates (const VPBlockBase *A, const VPBlockBase *B) const

Returns true if A properly dominates B.

Public Member Functions inherited from llvm::DominatorTreeBase< VPBlockBase, false >

DominatorTreeBase ()=default

DominatorTreeBase (DominatorTreeBase &&Arg)

DominatorTreeBase &

operator= (DominatorTreeBase &&RHS)

DominatorTreeBase (const DominatorTreeBase &)=delete

DominatorTreeBase &

operator= (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_iterator >

roots ()

iterator_range< const_root_iterator >

roots () 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

VPBlockBase *

getRoot () const

VPBlockBase *

findNearestCommonDominator (VPBlockBase *A, VPBlockBase *B) const

Find nearest common dominator basic block for basic block A and B.

const VPBlockBase *

findNearestCommonDominator (const VPBlockBase *A, const VPBlockBase *B) const

bool

isVirtualRoot (const DomTreeNodeBase< VPBlockBase > *A) const

VPBlockBase *

findNearestCommonDominator (iterator_range< IteratorTy > Nodes) 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 ()

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

Definition at line 38 of file VPlanDominatorTree.h.