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§
source§impl<'tcx> MirPass<'tcx> for SimplifyArmIdentity
impl<'tcx> MirPass<'tcx> for SimplifyArmIdentity
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§
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