reduce an mir code repetition like (n << amt) >> amt

This commit is contained in:
kenta7777
2019-02-23 10:07:09 +09:00
parent c6fd02772b
commit 42d5cf868c
+2 -2
View File
@@ -7,6 +7,7 @@
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 @@ pub fn write_discriminant_index(
// 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)?;