return false;
} else if last_assigned_to != opt_info.local_tmp_s1 {
trace!(
- "NO: end of assignemnt chain does not match written enum temp: {:?} != {:?}",
+ "NO: end of assignment chain does not match written enum temp: {:?} != {:?}",
last_assigned_to,
opt_info.local_tmp_s1
);
) -> StatementEquality {
let helper = |rhs: &Rvalue<'tcx>,
place: &Place<'tcx>,
- variant_index: &VariantIdx,
+ variant_index: VariantIdx,
switch_value: u128,
side_to_choose| {
let place_type = place.ty(self.body, self.tcx).ty;
};
// We need to make sure that the switch value that targets the bb with
// SetDiscriminant is the same as the variant discriminant.
- let variant_discr = adt.discriminant_for_variant(self.tcx, *variant_index).val;
+ let variant_discr = adt.discriminant_for_variant(self.tcx, variant_index).val;
if variant_discr != switch_value {
trace!(
"NO: variant discriminant {} does not equal switch value {}",
);
return StatementEquality::NotEqual;
}
- let variant_is_fieldless = adt.variants[*variant_index].fields.is_empty();
+ let variant_is_fieldless = adt.variant(variant_index).fields.is_empty();
if !variant_is_fieldless {
trace!("NO: variant {:?} was not fieldless", variant_index);
return StatementEquality::NotEqual;
// check for case A
(
StatementKind::Assign(box (_, rhs)),
- StatementKind::SetDiscriminant { place, variant_index },
+ &StatementKind::SetDiscriminant { ref place, variant_index },
) if y_target_and_value.value.is_some() => {
// choose basic block of x, as that has the assign
helper(
)
}
(
- StatementKind::SetDiscriminant { place, variant_index },
- StatementKind::Assign(box (_, rhs)),
+ &StatementKind::SetDiscriminant { ref place, variant_index },
+ &StatementKind::Assign(box (_, ref rhs)),
) if x_target_and_value.value.is_some() => {
// choose basic block of y, as that has the assign
helper(