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 translation, 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>