pub struct DominatorTreePreorder { /* private fields */ }
Expand description

Optional pre-order information that can be computed for a dominator tree.

This data structure is computed from a DominatorTree and provides:

  • A forward traversable dominator tree through the children() iterator.
  • An ordering of EBBs according to a dominator tree pre-order.
  • Constant time dominance checks at the EBB granularity.

The information in this auxillary data structure is not easy to update when the control flow graph changes, which is why it is kept separate.

Implementations§

Creating and computing the dominator tree pre-order.

Create a new blank DominatorTreePreorder.

Recompute this data structure to match domtree.

Query interface for the dominator tree pre-order.

Get an iterator over the direct children of ebb in the dominator tree.

These are the EBB’s whose immediate dominator is an instruction in ebb, ordered according to the CFG reverse post-order.

Fast, constant time dominance check with EBB granularity.

This computes the same result as domtree.dominates(a, b), but in guaranteed fast constant time. This is less general than the DominatorTree method because it only works with EBB program points.

An EBB is considered to dominate itself.

Compare two EBBs according to the dominator pre-order.

Compare two program points according to the dominator tree pre-order.

This ordering of program points have the property that given a program point, pp, all the program points dominated by pp follow immediately and contiguously after pp in the order.

Compare two value defs according to the dominator tree pre-order.

Two values defined at the same program point are compared according to their parameter or result order.

This is a total ordering of the values in the function.

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.