about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorLuqman Aden <laden@csclub.uwaterloo.ca>2013-07-27 04:38:55 -0400
committerLuqman Aden <laden@csclub.uwaterloo.ca>2013-07-27 04:47:12 -0400
commit4a85b08e08456920f07cf8bb583064f84c23575d (patch)
tree8c33ea908fb1ac6f0d1ff90f93b9045dc1bafd63 /src
parentc5194740a78ec113cb6cbc937e7263e2548f62f6 (diff)
librustc: Stop trying to make invalid slice with vec in static.
Diffstat (limited to 'src')
-rw-r--r--src/librustc/middle/trans/consts.rs11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/librustc/middle/trans/consts.rs b/src/librustc/middle/trans/consts.rs
index db9e3db2c0f..853b3a3c28f 100644
--- a/src/librustc/middle/trans/consts.rs
+++ b/src/librustc/middle/trans/consts.rs
@@ -211,11 +211,16 @@ pub fn const_expr(cx: @mut CrateContext, e: @ast::expr) -> ValueRef {
                         }
                         ty::AutoBorrowVec(ty::re_static, m) => {
                             assert!(m != ast::m_mutbl);
-                            let size = machine::llsize_of(cx,
-                                                          val_ty(llconst));
                             assert_eq!(abi::slice_elt_base, 0);
                             assert_eq!(abi::slice_elt_len, 1);
-                            llconst = C_struct([llptr, size]);
+
+                            match ty::get(ty).sty {
+                                ty::ty_evec(_, ty::vstore_fixed(*)) => {
+                                    let size = machine::llsize_of(cx, val_ty(llconst));
+                                    llconst = C_struct([llptr, size]);
+                                }
+                                _ => {}
+                            }
                         }
                         _ => {
                             cx.sess.span_bug(e.span,