pub enum AddCallGuards {
    AllCallEdges,
    CriticalCallEdges,
}

Variants

AllCallEdges

CriticalCallEdges

Implementations

Trait Implementations

Breaks outgoing critical edges for call terminators in the MIR.

Critical edges are edges that are neither the only edge leaving a block, nor the only edge entering one.

When you want something to happen “along” an edge, you can either do at the end of the predecessor block, or at the start of the successor block. Critical edges have to be broken in order to prevent “edge actions” from affecting other edges. We need this for calls that are codegened to LLVM invoke instructions, because invoke is a block terminator in LLVM so we can’t insert any code to handle the call’s result into the block that performs the call.

This function will break those edges by inserting new blocks along them.

NOTE: Simplify CFG will happily undo most of the work this pass does.

Returns true if this pass is enabled with the current combination of compiler flags.
If this pass causes the MIR to enter a new phase, return that phase.
This method tests for self and other values to be equal, and is used by ==. Read more
This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason. Read more

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.

Layout

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference’s “Type Layout” chapter for details on type layout guarantees.

Size: 1 byte

Size for each variant:

  • AllCallEdges: 0 bytes
  • CriticalCallEdges: 0 bytes