MachinePostDominatorTree ‐ an analysis pass wrapper for DominatorTree used to compute the post‐dominator tree for MachineFunctions.

Synopsis

Declared in <llvm/CodeGen/MachinePostDominators.h>

class MachinePostDominatorTree
    : public PostDomTreeBase<MachineBasicBlock>

Base Classes

Name

Description

PostDomTreeBase<MachineBasicBlock>

Post‐dominator tree specialization.

Type Aliases

Name

Description

NodePtr

Pointer to a CFG node / basic block.

NodeTrait

Node traits used to access parents and entry nodes.

NodeType

Concrete CFG node / basic‐block type.

ParentPtr

Pointer to the parent of a CFG node (e.g. a Function).

ParentType

Type of the parent of a CFG node (e.g. Function).

UpdateKind

Kind of CFG update (insert or delete).

UpdateType

CFG update describing an edge insertion or deletion.

const_root_iterator

Const iterator over root CFG blocks.

root_iterator

Iteration over roots.

Enums

Name

Description

VerificationLevel

How thoroughly verify checks the tree.

Member Functions

Name

Description

MachinePostDominatorTree [constructor]

Construct an empty machine post‐dominator tree.

MachinePostDominatorTree [constructor]

Construct a machine post‐dominator tree for MF.

operator= [deleted]

Copy assignment is deleted; trees are moved or recalculated.

operator=

Move‐assign, taking ownership of RHS's tree state.

addNewBlock

Add a new node to the dominator tree information.

applyUpdates

Inform the dominator tree about a sequence of CFG edge insertions and deletions and perform a batch update on the tree.

applyUpdates

Apply CFG updates with an additional post‐view of the CFG.

changeImmediateDominator

Change the immediate dominator of block BB to block NewBB.

changeImmediateDominator

Change the immediate dominator of tree node N to NewIDom.

compare

Return true if this tree differs from Other.

deleteEdge

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

dominates

Return true iff block A dominates block B.

dominates

Return true iff tree node A dominates tree node B.

eraseNode

Remove a leaf node for block BB from the dominator tree.

findNearestCommonDominator

Returns the nearest common dominator of the given blocks. If that tree node is a virtual root, a nullptr will be returned.

findNearestCommonDominator

Find the nearest common dominator of every block in Nodes.

findNearestCommonDominator

Find the nearest common dominator of blocks A and B.

findNearestCommonDominator

Find the nearest common dominator of const blocks A and B.

getDescendants

Get all nodes dominated by R, including R itself.

getNode

Return the (post‐)dominator tree node for basic block BB.

getRoot

Return the single root block of a forward dominator tree.

getRootNode

Return the root node of this (post‐)dominator tree.

getRootNode

Return the root node of this (post‐)dominator tree.

insertEdge

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

invalidate

Handle invalidation explicitly.

isPostDominator

Return true if this tree encodes post‐dominance rather than dominance.

isReachableFromEntry

Return true if A is dominated by the entry block of its function.

isVirtualRoot

Return true if A is the virtual root of a post‐dominator tree.

operator[]

Return the (post‐)dominator tree node for basic block BB.

print

Print the dominator tree in human‐readable form.

properlyDominates

Return true iff block A properly dominates block B.

properlyDominates

Return true iff tree node A properly dominates tree node B.

recalculate

Compute a dominator tree for the given function.

recalculate

Recompute the tree for Func starting from the given CFG updates.

reset

Clear all tree nodes, roots, and allocator state.

root_begin

Return an iterator to the first root block.

root_begin

Return a const iterator to the first root block.

root_end

Return an iterator past the last root block.

root_end

Return a const iterator past the last root block.

root_size

Return the number of root blocks.

roots

Return a range over the root blocks.

roots

Return a const range over the root blocks.

setNewRoot

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

splitBlock

Update the tree after NewBB is split and has a single successor.

updateBlockNumbers

Update dominator tree after renumbering blocks.

updateDFSNumbers

updateDFSNumbers ‐ Assign In and Out numbers to the nodes while walking dominator tree in dfs order.

verify

Check whether the dominator tree is correct at the given verification level.

Static Data Members

Name

Description

Delete

CFG update kind for deleting an edge.

Insert

CFG update kind for inserting an edge.

Using Declarations

Name

Description

findNearestCommonDominator

Make findNearestCommonDominator(const NodeT *A, const NodeT *B) available.

Protected Type Aliases

Name

Description

DomTreeNodeStorageTy

Storage type for the dense map from block number to tree node.

Protected Member Functions

Name

Description

Split

Update the tree after NewBB is split and has a single successor.

addRoot

Append BB to the list of root blocks.

createNode

Create a node for BB and link it under IDom when provided.

createNodeUnlinked

Create a node for BB; the caller must link it with addChild.

Protected Data Members

Name

Description

BlockNumberEpoch

Epoch of GraphTraits block numbers used when the tree was built/updated.

DFSInfoValid

True when DFS in/out numbers on nodes are currently valid.

DomTreeNodes

Tree nodes indexed by CFG block number (plus a slot for nullptr in PDT).

NodeAllocator

Allocator backing DomTreeNodeBase instances.

Parent

Parent of the CFG nodes (e.g. Function) this tree was built for.

RootNode

Root node of the dominator tree (possibly a virtual root for PDT).

Roots

Root CFG blocks of this (post‐)dominator tree.

SlowQueries

Count of slow dominance queries since DFS numbers were last refreshed.

Created with MrDocs