about summary refs log tree commit diff
path: root/src/comp
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2011-08-04 19:06:13 -0700
committerPatrick Walton <pcwalton@mimiga.net>2011-08-04 19:06:13 -0700
commita26c027731fbee8a0a7c6e4a93a90f1ac73b4fd9 (patch)
tree97cd78f37ad3710e9b402475c3356907d66bb68a /src/comp
parent3d5a777fe19ab210aedf473678687a98023ff586 (diff)
downloadrust-a26c027731fbee8a0a7c6e4a93a90f1ac73b4fd9.tar.gz
rust-a26c027731fbee8a0a7c6e4a93a90f1ac73b4fd9.zip
Revert "rustc: Don't emit memset for non-structural types" due to crashes
This reverts commit 3d5a777fe19ab210aedf473678687a98023ff586.
Diffstat (limited to 'src/comp')
-rw-r--r--src/comp/middle/trans.rs15
1 files changed, 2 insertions, 13 deletions
diff --git a/src/comp/middle/trans.rs b/src/comp/middle/trans.rs
index 8e270bb78a9..7e913c52839 100644
--- a/src/comp/middle/trans.rs
+++ b/src/comp/middle/trans.rs
@@ -2349,12 +2349,7 @@ fn drop_slot(cx: &@block_ctxt, slot: ValueRef, t: &ty::t) -> result {
     let re = drop_ty(cx, llptr, t);
     let llty = val_ty(slot);
     let llelemty = lib::llvm::llvm::LLVMGetElementType(llty);
-    if ty::type_is_structural(bcx_tcx(cx), t) {
-        call_bzero(cx, slot, C_uint(llsize_of_real(bcx_ccx(cx), llelemty)),
-                   C_uint(llalign_of_real(bcx_ccx(cx), llelemty)));
-    } else {
-        cx.build.Store(C_null(llelemty), slot);
-    }
+    call_bzero(cx, slot, llsize_of(llelemty), C_uint(1u));
     ret re;
 }
 
@@ -5860,13 +5855,7 @@ fn zero_alloca(cx: &@block_ctxt, llptr: ValueRef, t: ty::t) -> result {
         bcx = call_bzero(llalign.bcx, llptr, llsz.val, llalign.val).bcx;
     } else {
         let llty = type_of(bcx_ccx(bcx), cx.sp, t);
-        if ty::type_is_structural(bcx_tcx(cx), t) {
-            bcx = call_bzero(cx, llptr,
-                             C_uint(llsize_of_real(bcx_ccx(cx), llty)),
-                             C_uint(llalign_of_real(bcx_ccx(cx), llty))).bcx;
-        } else {
-            bcx.build.Store(C_null(llty), llptr);
-        }
+        bcx = call_bzero(cx, llptr, llsize_of(llty), C_uint(1u)).bcx;
     }
     ret rslt(bcx, llptr);
 }