Struct rustc_mir::transform::simplify_try::SimplifyBranchSameOptimizationFinder [−][src]
Fields
body: &'a Body<'tcx>tcx: TyCtxt<'tcx>Implementations
impl<'a, 'tcx> SimplifyBranchSameOptimizationFinder<'a, 'tcx>[src]
impl<'a, 'tcx> SimplifyBranchSameOptimizationFinder<'a, 'tcx>[src]fn find(&self) -> Vec<SimplifyBranchSameOptimization>[src]
fn statement_equality(
&self,
adt_matched_on: Place<'tcx>,
x: &Statement<'tcx>,
x_target_and_value: &SwitchTargetAndValue,
y: &Statement<'tcx>,
y_target_and_value: &SwitchTargetAndValue
) -> StatementEquality[src]
fn statement_equality(
&self,
adt_matched_on: Place<'tcx>,
x: &Statement<'tcx>,
x_target_and_value: &SwitchTargetAndValue,
y: &Statement<'tcx>,
y_target_and_value: &SwitchTargetAndValue
) -> StatementEquality[src]Tests if two statements can be considered equal
Statements can be trivially equal if the kinds match. But they can also be considered equal in the following case A:
discriminant(_0) = 0; // bb1 _0 = move _1; // bb2
In this case the two statements are equal iff
_0is an enum where the variant index 0 is fieldless, and- bb1 was targeted by a switch where the discriminant of
_1was switched on
Auto Trait Implementations
impl<'a, 'tcx> !RefUnwindSafe for SimplifyBranchSameOptimizationFinder<'a, 'tcx>
impl<'a, 'tcx> !Send for SimplifyBranchSameOptimizationFinder<'a, 'tcx>
impl<'a, 'tcx> !Sync for SimplifyBranchSameOptimizationFinder<'a, 'tcx>
impl<'a, 'tcx> Unpin for SimplifyBranchSameOptimizationFinder<'a, 'tcx> where
'tcx: 'a,
'tcx: 'a,
impl<'a, 'tcx> !UnwindSafe for SimplifyBranchSameOptimizationFinder<'a, 'tcx>
Blanket Implementations
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]pub fn borrow_mut(&mut self) -> &mut T[src]
pub fn borrow_mut(&mut self) -> &mut T[src]Mutably borrows from an owned value. Read more
impl<T> WithConstness for T[src]
impl<T> WithConstness for T[src]