llvm::PostDominatorTree

PostDominatorTree Class - Concrete subclass of DominatorTree that is used to compute the post-dominator tree.

Synopsis

Declared in <llvm/Analysis/PostDominators.h>

class PostDominatorTree
    : public PostDomTreeBase<BasicBlock>

Base Classes

NameDescription
PostDomTreeBase<BasicBlock>Post-dominator tree specialization.

Type Aliases

NameDescription
Base Base post-dominator-tree type specialized for BasicBlock.
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

NameDescription
VerificationLevel How thoroughly verify checks the tree.

Member Functions

NameDescription
PostDominatorTree [constructor]Construct an empty post-dominator tree.
PostDominatorTree [constructor]Construct a post-dominator tree for F.
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 if I1 dominates I2.
dominates Return true iff tree node A dominates tree node B.
eraseNode Remove a leaf node for block BB from the dominator tree.
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

NameDescription
Delete CFG update kind for deleting an edge.
Insert CFG update kind for inserting an edge.
IsPostDominator True when this tree encodes post-dominance rather than dominance.

Using Declarations

NameDescription
dominates Bring base-class dominates overloads into this class.

Protected Type Aliases

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

Protected Member Functions

NameDescription
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

NameDescription
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.