about summary refs log tree commit diff
diff options
context:
space:
mode:
authorOliver Schneider <git-spam-no-reply9815368754983@oli-obk.de>2018-02-23 13:39:41 +0100
committerOliver Schneider <git-spam-no-reply9815368754983@oli-obk.de>2018-03-08 08:35:38 +0100
commiteb18d39a04dc524232471d1011bfd7c1f1fcad4d (patch)
treea139cdcdb0d0ca4c42577a3a2186ae7dea692f4b
parent273025675d5c526ae5a0b212b4a46a7fb9938d01 (diff)
Reuse `Integer::from_attr`
-rw-r--r--src/librustc_mir/hair/cx/mod.rs11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/librustc_mir/hair/cx/mod.rs b/src/librustc_mir/hair/cx/mod.rs
index 28eef70679b..57aa7bd4afe 100644
--- a/src/librustc_mir/hair/cx/mod.rs
+++ b/src/librustc_mir/hair/cx/mod.rs
@@ -23,7 +23,7 @@ use rustc::hir::map::blocks::FnLikeNode;
 use rustc::middle::region;
 use rustc::infer::InferCtxt;
 use rustc::ty::subst::Subst;
-use rustc::ty::{self, Ty, TyCtxt};
+use rustc::ty::{self, Ty, TyCtxt, layout};
 use rustc::ty::subst::Substs;
 use syntax::ast::{self, LitKind};
 use syntax::attr;
@@ -153,11 +153,12 @@ impl<'a, 'gcx, 'tcx> Cx<'a, 'gcx, 'tcx> {
         &self,
         ty: Ty,
     ) -> u64 {
-        match ty.sty {
-            ty::TyInt(ity) => ity.bit_width(),
-            ty::TyUint(uty) => uty.bit_width(),
+        let ty = match ty.sty {
+            ty::TyInt(ity) => attr::IntType::SignedInt(ity),
+            ty::TyUint(uty) => attr::IntType::UnsignedInt(uty),
             _ => bug!("{} is not an integer", ty),
-        }.map_or(self.tcx.data_layout.pointer_size.bits(), |n| n as u64)
+        };
+        layout::Integer::from_attr(self.tcx, ty).size().bits()
     }
 
     pub fn const_eval_literal(