pub struct RemoveUninitDrops;
Expand description
Removes Drop
and DropAndReplace
terminators whose target is known to be uninitialized at
that point.
This is redundant with drop elaboration, but we need to do it prior to const-checking, and running const-checking after drop elaboration makes it optimization dependent, causing issues like #90770.
Trait Implementations
sourceimpl<'tcx> MirPass<'tcx> for RemoveUninitDrops
impl<'tcx> MirPass<'tcx> for RemoveUninitDrops
fn run_pass(&self, tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>)
fn name(&self) -> Cow<'_, str>
sourcefn is_enabled(&self, _sess: &Session) -> bool
fn is_enabled(&self, _sess: &Session) -> bool
Returns
true
if this pass is enabled with the current combination of compiler flags.sourcefn phase_change(&self) -> Option<MirPhase>
fn phase_change(&self) -> Option<MirPhase>
If this pass causes the MIR to enter a new phase, return that phase.
fn is_mir_dump_enabled(&self) -> bool
Auto Trait Implementations
impl RefUnwindSafe for RemoveUninitDrops
impl Send for RemoveUninitDrops
impl Sync for RemoveUninitDrops
impl Unpin for RemoveUninitDrops
impl UnwindSafe for RemoveUninitDrops
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
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: 0 bytes