about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorNiko Matsakis <niko@alum.mit.edu>2014-01-16 16:18:46 -0500
committerNiko Matsakis <niko@alum.mit.edu>2014-01-16 16:29:52 -0500
commit4b52d899fffd8e6ef01a5a05c1d513278a7823bd (patch)
treefc59b1fcc3b30c9a0afcba9a59541f6e9140e905 /src
parent14b0abfd8204aa7673065800c4b8c2572eb5427f (diff)
Further refine treatment of voidish arrays
Diffstat (limited to 'src')
-rw-r--r--src/librustc/middle/trans/common.rs4
-rw-r--r--src/librustc/middle/trans/tvec.rs2
2 files changed, 2 insertions, 4 deletions
diff --git a/src/librustc/middle/trans/common.rs b/src/librustc/middle/trans/common.rs
index e1e026c3171..90083541e42 100644
--- a/src/librustc/middle/trans/common.rs
+++ b/src/librustc/middle/trans/common.rs
@@ -64,7 +64,7 @@ pub fn type_is_immediate(ccx: &CrateContext, ty: ty::t) -> bool {
     let tcx = ccx.tcx;
     let simple = ty::type_is_scalar(ty) || ty::type_is_boxed(ty) ||
         ty::type_is_unique(ty) || ty::type_is_region_ptr(ty) ||
-        type_is_newtype_immediate(ccx, ty) ||
+        type_is_newtype_immediate(ccx, ty) || ty::type_is_bot(ty) ||
         ty::type_is_simd(tcx, ty);
     if simple {
         return true;
@@ -75,7 +75,7 @@ pub fn type_is_immediate(ccx: &CrateContext, ty: ty::t) -> bool {
             let llty = sizing_type_of(ccx, ty);
             llsize_of_alloc(ccx, llty) <= llsize_of_alloc(ccx, ccx.int_type)
         }
-        _ => false
+        _ => type_is_voidish(ccx, ty)
     }
 }
 
diff --git a/src/librustc/middle/trans/tvec.rs b/src/librustc/middle/trans/tvec.rs
index c119bed189d..1642d333a9a 100644
--- a/src/librustc/middle/trans/tvec.rs
+++ b/src/librustc/middle/trans/tvec.rs
@@ -553,7 +553,6 @@ pub fn get_base_and_byte_len(bcx: &Block,
 
     match vstore {
         ty::vstore_fixed(n) => {
-            assert!(!type_is_immediate(bcx.ccx(), vt.vec_ty));
             let base = GEPi(bcx, llval, [0u, 0u]);
             let len = Mul(bcx, C_uint(ccx, n), vt.llunit_size);
             (base, len)
@@ -596,7 +595,6 @@ pub fn get_base_and_len(bcx: &Block,
 
     match vstore {
         ty::vstore_fixed(n) => {
-            assert!(!type_is_immediate(bcx.ccx(), vt.vec_ty));
             let base = GEPi(bcx, llval, [0u, 0u]);
             (base, C_uint(ccx, n))
         }