pub struct SimplifyArmIdentity;
Expand description
Simplifies arms of form Variant(x) => Variant(x)
to just a move.
This is done by transforming basic blocks where the statements match:
ⓘ
_LOCAL_TMP = ((_LOCAL_1 as Variant ).FIELD: TY );
_TMP_2 = _LOCAL_TMP;
((_LOCAL_0 as Variant).FIELD: TY) = move _TMP_2;
discriminant(_LOCAL_0) = VAR_IDX;
into:
ⓘ
_LOCAL_0 = move _LOCAL_1
Trait Implementations
sourceimpl<'tcx> MirPass<'tcx> for SimplifyArmIdentity
impl<'tcx> MirPass<'tcx> for SimplifyArmIdentity
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 SimplifyArmIdentity
impl Send for SimplifyArmIdentity
impl Sync for SimplifyArmIdentity
impl Unpin for SimplifyArmIdentity
impl UnwindSafe for SimplifyArmIdentity
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