Struct rustc_mir::transform::elaborate_drops::ElaborateDropsCtxt [−][src]
struct ElaborateDropsCtxt<'a, 'tcx: 'a> {
tcx: TyCtxt<'a, 'tcx, 'tcx>,
mir: &'a Mir<'tcx>,
env: &'a MoveDataParamEnv<'tcx, 'tcx>,
flow_inits: DataflowResults<MaybeInitializedPlaces<'a, 'tcx, 'tcx>>,
flow_uninits: DataflowResults<MaybeUninitializedPlaces<'a, 'tcx, 'tcx>>,
drop_flags: FxHashMap<MovePathIndex, Local>,
patch: MirPatch<'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?
Fields
tcx: TyCtxt<'a, 'tcx, '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?
mir: &'a 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?
env: &'a MoveDataParamEnv<'tcx, '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?
flow_inits: DataflowResults<MaybeInitializedPlaces<'a, 'tcx, '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?
flow_uninits: DataflowResults<MaybeUninitializedPlaces<'a, 'tcx, '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?
drop_flags: FxHashMap<MovePathIndex, Local>
🔬 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?
patch: MirPatch<'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?
Methods
impl<'b, 'tcx> ElaborateDropsCtxt<'b, 'tcx>[src]
impl<'b, 'tcx> ElaborateDropsCtxt<'b, 'tcx>fn move_data(&self) -> &'b MoveData<'tcx>[src]
fn move_data(&self) -> &'b MoveData<'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 param_env(&self) -> ParamEnv<'tcx>[src]
fn param_env(&self) -> ParamEnv<'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 initialization_data_at(&self, loc: Location) -> InitializationData[src]
fn initialization_data_at(&self, loc: Location) -> InitializationData🔬 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 create_drop_flag(&mut self, index: MovePathIndex, span: Span)[src]
fn create_drop_flag(&mut self, index: MovePathIndex, span: Span)🔬 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 drop_flag(&mut self, index: MovePathIndex) -> Option<Place<'tcx>>[src]
fn drop_flag(&mut self, index: MovePathIndex) -> Option<Place<'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 elaborate(self) -> MirPatch<'tcx>[src]
fn elaborate(self) -> MirPatch<'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?
create a patch that elaborates all drops in the input MIR.
fn collect_drop_flags(&mut self)[src]
fn collect_drop_flags(&mut self)🔬 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 elaborate_drops(&mut self)[src]
fn elaborate_drops(&mut self)🔬 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 elaborate_replace(
&mut self,
loc: Location,
location: &Place<'tcx>,
value: &Operand<'tcx>,
target: BasicBlock,
unwind: Option<BasicBlock>
)[src]
fn elaborate_replace(
&mut self,
loc: Location,
location: &Place<'tcx>,
value: &Operand<'tcx>,
target: BasicBlock,
unwind: Option<BasicBlock>
)🔬 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?
Elaborate a MIR replace terminator. This instruction
is not directly handled by codegen, and therefore
must be desugared.
The desugaring drops the location if needed, and then writes the value (including setting the drop flag) over it in both arms.
The replace terminator can also be called on places that
are not tracked by elaboration (for example,
replace x[i] <- tmp0). The borrow checker requires that
these locations are initialized before the assignment,
so we just generate an unconditional drop.
fn constant_bool(&self, span: Span, val: bool) -> Rvalue<'tcx>[src]
fn constant_bool(&self, span: Span, val: bool) -> Rvalue<'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 set_drop_flag(
&mut self,
loc: Location,
path: MovePathIndex,
val: DropFlagState
)[src]
fn set_drop_flag(
&mut self,
loc: Location,
path: MovePathIndex,
val: DropFlagState
)🔬 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 drop_flags_on_init(&mut self)[src]
fn drop_flags_on_init(&mut self)🔬 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 drop_flags_for_fn_rets(&mut self)[src]
fn drop_flags_for_fn_rets(&mut self)🔬 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 drop_flags_for_args(&mut self)[src]
fn drop_flags_for_args(&mut self)🔬 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 drop_flags_for_locs(&mut self)[src]
fn drop_flags_for_locs(&mut self)🔬 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<'a, 'tcx> !Send for ElaborateDropsCtxt<'a, 'tcx>
impl<'a, 'tcx> !Send for ElaborateDropsCtxt<'a, 'tcx>impl<'a, 'tcx> !Sync for ElaborateDropsCtxt<'a, 'tcx>
impl<'a, 'tcx> !Sync for ElaborateDropsCtxt<'a, 'tcx>