about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/librustc/mir/mod.rs8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/librustc/mir/mod.rs b/src/librustc/mir/mod.rs
index f1812569258..80193d8271d 100644
--- a/src/librustc/mir/mod.rs
+++ b/src/librustc/mir/mod.rs
@@ -1149,8 +1149,12 @@ impl<'tcx> TerminatorKind<'tcx> {
             Return | Resume | Abort | Unreachable | GeneratorDrop => vec![],
             Goto { .. } => vec!["".into()],
             SwitchInt { ref values, switch_ty, .. } => {
-                let size = ty::tls::with(|tcx| switch_ty.scalar_size(tcx));
-                let size = size.map_or(0, |size| size.bits()) as u8;
+                let size = ty::tls::with(|tcx| {
+                    let param_env = ty::ParamEnv::empty();
+                    let tcx = tcx.global_tcx();
+                    let switch_ty = tcx.lift(&switch_ty).unwrap();
+                    tcx.layout_of(param_env.and(switch_ty)).unwrap().size.bits() as u8
+                });
                 values.iter()
                       .map(|&u| {
                           let mut s = String::new();