pub enum LoweredBlock {
    Orig {
        block: Block,
    },
    OrigAndEdge {
        block: Block,
        edge_inst: Inst,
        succ: Block,
    },
    EdgeAndOrig {
        pred: Block,
        edge_inst: Inst,
        block: Block,
    },
    Edge {
        pred: Block,
        edge_inst: Inst,
        succ: Block,
    },
}
Expand description

The origin of a block in the lowered block-order: either an original CLIF block, or an inserted edge-block, or a combination of the two if an edge is non-critical.

Variants

Orig

Fields

block: Block

Original CLIF block.

Block in original CLIF, with no merged edge-blocks.

OrigAndEdge

Fields

block: Block

The original CLIF block contained in this lowered block.

edge_inst: Inst

The edge (jump) instruction transitioning from this block to the next, i.e., corresponding to the included edge-block. This will be an instruction in block.

succ: Block

The successor CLIF block.

Block in the original CLIF, plus edge-block to one succ (which is the one successor of the original block).

EdgeAndOrig

Fields

pred: Block

The previous CLIF block, i.e., the edge block’s predecessor.

edge_inst: Inst

The edge (jump) instruction corresponding to the included edge-block. This will be an instruction in pred.

block: Block

The original CLIF block included in this lowered block.

Block in the original CLIF, preceded by edge-block from one pred (which is the one pred of the original block).

Edge

Fields

pred: Block

The predecessor CLIF block.

edge_inst: Inst

The edge (jump) instruction corresponding to this edge’s transition. This will be an instruction in pred.

succ: Block

The successor CLIF block.

Split critical edge between two CLIF blocks. This lowered block does not correspond to any original CLIF blocks; it only serves as an insertion point for work to happen on the transition from pred to succ.

Implementations

The associated original (CLIF) block included in this lowered block, if any.

The associated in-edge, if any.

the associated out-edge, if any. Also includes edge-only blocks.

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

Feeds this value into the given Hasher. Read more

Feeds a slice of this type into the given Hasher. Read more

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

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

Compare self to key and return true if they are equal.

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 resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

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.