about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorbjorn3 <bjorn3@users.noreply.github.com>2020-11-06 19:49:33 +0100
committerbjorn3 <bjorn3@users.noreply.github.com>2020-11-06 19:49:33 +0100
commit509054d4dea5a8ea1cfa382db5f7c01b620fa8d2 (patch)
tree18424417e47367a6c80c82e5d6e0d3bdf13dc5d4 /src
parent9b66df42496201e6512f53cde83ba444a5990567 (diff)
downloadrust-509054d4dea5a8ea1cfa382db5f7c01b620fa8d2.tar.gz
rust-509054d4dea5a8ea1cfa382db5f7c01b620fa8d2.zip
Fix ICE
Diffstat (limited to 'src')
-rw-r--r--src/discriminant.rs15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/discriminant.rs b/src/discriminant.rs
index 1e8e86add1a..e038df2272f 100644
--- a/src/discriminant.rs
+++ b/src/discriminant.rs
@@ -26,12 +26,15 @@ pub(crate) fn codegen_set_discriminant<'tcx>(
             variants: _,
         } => {
             let ptr = place.place_field(fx, mir::Field::new(tag_field));
-            let to = layout
-                .ty
-                .discriminant_for_variant(fx.tcx, variant_index)
-                .unwrap()
-                .val
-                .into();
+            let to = ty::ScalarInt::try_from_uint(
+                layout
+                    .ty
+                    .discriminant_for_variant(fx.tcx, variant_index)
+                    .unwrap()
+                    .val,
+                ptr.layout().size,
+            )
+            .unwrap();
             let discr = CValue::const_val(fx, ptr.layout(), to);
             ptr.write_cvalue(fx, discr);
         }