Enum rustc_mir::transform::add_call_guards::AddCallGuards [−][src]
pub enum AddCallGuards { AllCallEdges, CriticalCallEdges, }
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
Variants
AllCallEdges
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
CriticalCallEdges
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
Methods
impl AddCallGuards
[src]
impl AddCallGuards
pub fn add_call_guards(&self, mir: &mut Mir)
[src]
pub fn add_call_guards(&self, mir: &mut Mir)
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
Trait Implementations
impl PartialEq for AddCallGuards
[src]
impl PartialEq for AddCallGuards
fn eq(&self, other: &AddCallGuards) -> bool
[src]
fn eq(&self, other: &AddCallGuards) -> bool
This method tests for self
and other
values to be equal, and is used by ==
. Read more
fn ne(&self, other: &Rhs) -> bool
1.0.0[src]
fn ne(&self, other: &Rhs) -> bool
This method tests for !=
.
impl MirPass for AddCallGuards
[src]
impl MirPass for AddCallGuards
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 translated 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.
fn run_pass<'a, 'tcx>(
&self,
_tcx: TyCtxt<'a, 'tcx, 'tcx>,
_src: MirSource,
mir: &mut Mir<'tcx>
)
[src]
fn run_pass<'a, 'tcx>(
&self,
_tcx: TyCtxt<'a, 'tcx, 'tcx>,
_src: MirSource,
mir: &mut Mir<'tcx>
)
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
fn name<'a>(&'a self) -> Cow<'a, str>
[src]
fn name<'a>(&'a self) -> Cow<'a, str>
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
Auto Trait Implementations
impl Send for AddCallGuards
impl Send for AddCallGuards
impl Sync for AddCallGuards
impl Sync for AddCallGuards