about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorkenta7777 <k.hasegw7@gmail.com>2019-02-23 10:07:09 +0900
committerkenta7777 <k.hasegw7@gmail.com>2019-02-23 10:07:09 +0900
commit42d5cf868c74bcd2eabe2b88430a3427d552cc0c (patch)
treeefface2cd18b9b1231989a73f2092b8e94ae7fd3 /src
parentc6fd02772bdfa8934bedd1823b563ae3a76074e6 (diff)
downloadrust-42d5cf868c74bcd2eabe2b88430a3427d552cc0c.tar.gz
rust-42d5cf868c74bcd2eabe2b88430a3427d552cc0c.zip
reduce an mir code repetition like (n << amt) >> amt
Diffstat (limited to 'src')
-rw-r--r--src/librustc_mir/interpret/place.rs4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/librustc_mir/interpret/place.rs b/src/librustc_mir/interpret/place.rs
index b29e09900f6..0bec0d5eb20 100644
--- a/src/librustc_mir/interpret/place.rs
+++ b/src/librustc_mir/interpret/place.rs
@@ -7,6 +7,7 @@ use std::hash::Hash;
 
 use rustc::hir;
 use rustc::mir;
+use rustc::mir::interpret::truncate;
 use rustc::ty::{self, Ty};
 use rustc::ty::layout::{self, Size, Align, LayoutOf, TyLayout, HasDataLayout, VariantIdx};
 use rustc::ty::TypeFoldable;
@@ -959,8 +960,7 @@ where
                 // their computation, but the in-memory tag is the smallest possible
                 // representation
                 let size = tag.value.size(self);
-                let shift = 128 - size.bits();
-                let discr_val = (discr_val << shift) >> shift;
+                let discr_val = truncate(discr_val, size);
 
                 let discr_dest = self.place_field(dest, 0)?;
                 self.write_scalar(Scalar::from_uint(discr_val, size), discr_dest)?;