diff --git a/compiler/rustc_smir/src/rustc_smir/convert/mir.rs b/compiler/rustc_smir/src/rustc_smir/convert/mir.rs index 04ae134eaca6e..e9b835f90db24 100644 --- a/compiler/rustc_smir/src/rustc_smir/convert/mir.rs +++ b/compiler/rustc_smir/src/rustc_smir/convert/mir.rs @@ -579,8 +579,10 @@ impl<'tcx> Stable<'tcx> for mir::TerminatorKind<'tcx> { mir::TerminatorKind::SwitchInt { discr, targets } => TerminatorKind::SwitchInt { discr: discr.stable(tables), targets: { - let (value_vec, target_vec) = + let (value_vec, mut target_vec): (Vec<_>, Vec<_>) = targets.iter().map(|(value, target)| (value, target.as_usize())).unzip(); + // We need to push otherwise as last element to ensure it's same as in MIR. + target_vec.push(targets.otherwise().as_usize()); stable_mir::mir::SwitchTargets { value: value_vec, targets: target_vec } }, otherwise: targets.otherwise().as_usize(), diff --git a/compiler/stable_mir/src/mir/pretty.rs b/compiler/stable_mir/src/mir/pretty.rs index ee2237394ca75..759c3b148dfef 100644 --- a/compiler/stable_mir/src/mir/pretty.rs +++ b/compiler/stable_mir/src/mir/pretty.rs @@ -107,7 +107,7 @@ pub fn pretty_terminator(terminator: &TerminatorKind, w: &mut W) - if i > 0 { write!(w, ", ")?; } - write!(w, "{}: {:?}", labels[i], target)?; + write!(w, "{}: bb{:?}", labels[i], target)?; } if show_unwind { write!(w, ", ")?; @@ -126,7 +126,7 @@ pub fn pretty_terminator_head(terminator: &TerminatorKind) -> String { match terminator { Goto { .. } => format!(" goto"), SwitchInt { discr, .. } => { - format!(" switch({})", pretty_operand(discr)) + format!(" switchInt(_{})", pretty_operand(discr)) } Resume => format!(" resume"), Abort => format!(" abort"),