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

Public Member Functions

MachineDominatorTree ()=default

MachineDominatorTree (MachineFunction &MF)

bool

invalidate (MachineFunction &, const PreservedAnalyses &PA, MachineFunctionAnalysisManager::Invalidator &)

Handle invalidation explicitly.

bool

dominates (const MachineInstr *A, const MachineInstr *B) const

bool

dominates (const DomTreeNodeBase< NodeT > *A, const DomTreeNodeBase< NodeT > *B) const

dominates - Returns true iff A dominates B.

bool

dominates (const NodeT *A, const NodeT *B) const

- Public Member Functions inherited from llvm::DominatorTreeBase< NodeT, IsPostDom >

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< NodeT > *

getNode (const NodeT *BB) const

getNode - return the (Post)DominatorTree node for the specified basic block.

DomTreeNodeBase< NodeT > *

operator[] (const NodeT *BB) const

See getNode.

DomTreeNodeBase< NodeT > *

getRootNode ()

getRootNode - This returns the entry node for the CFG of the function.

const DomTreeNodeBase< NodeT > *

getRootNode () const

void

getDescendants (NodeT *R, SmallVectorImpl< NodeT * > &Result) const

Get all nodes dominated by R, including R itself.

bool

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

properlyDominates - Returns true iff A dominates B and A != B.

bool

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

bool

isReachableFromEntry (const NodeT *A) const

isReachableFromEntry - Return true if A is dominated by the entry block of the function containing it.

bool

isReachableFromEntry (const DomTreeNodeBase< NodeT > *A) const

bool

dominates (const DomTreeNodeBase< NodeT > *A, const DomTreeNodeBase< NodeT > *B) const

dominates - Returns true iff A dominates B.

bool

dominates (const NodeT *A, const NodeT *B) const

NodeT *

getRoot () const

NodeT *

findNearestCommonDominator (NodeT *A, NodeT *B) const

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

const NodeT *

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

bool

isVirtualRoot (const DomTreeNodeBase< NodeT > *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 (NodeT *From, NodeT *To)

Inform the dominator tree about a CFG edge insertion and update the tree.

void

deleteEdge (NodeT *From, NodeT *To)

Inform the dominator tree about a CFG edge deletion and update the tree.

DomTreeNodeBase< NodeT > *

addNewBlock (NodeT *BB, NodeT *DomBB)

Add a new node to the dominator tree information.

DomTreeNodeBase< NodeT > *

setNewRoot (NodeT *BB)

Add a new node to the forward dominator tree and make it a new root.

void

changeImmediateDominator (DomTreeNodeBase< NodeT > *N, DomTreeNodeBase< NodeT > *NewIDom)

changeImmediateDominator - This method is used to update the dominator tree information when a node's immediate dominator changes.

void

changeImmediateDominator (NodeT *BB, NodeT *NewBB)

void

eraseNode (NodeT *BB)

eraseNode - Removes a node from the dominator tree.

void

splitBlock (NodeT *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)

template<typename T = NodeT>

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

DominatorTree Class - Concrete subclass of DominatorTreeBase that is used to compute a normal dominator tree.

Definition at line 75 of file MachineDominators.h.