about summary refs log tree commit diff
path: root/src/comp
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2011-09-23 23:00:46 -0700
committerBrian Anderson <banderson@mozilla.com>2011-09-24 12:36:51 -0700
commit777a53631301b548be6c195361663178a926c4a3 (patch)
tree3b6114c4c94c94d695c42d58eb29569a48929ff3 /src/comp
parent856acbf66d21a20bd115f11c55c7abecd1f4c92e (diff)
downloadrust-777a53631301b548be6c195361663178a926c4a3.tar.gz
rust-777a53631301b548be6c195361663178a926c4a3.zip
Support non-immediates in unique-box type glue
Issue #409
Diffstat (limited to 'src/comp')
-rw-r--r--src/comp/middle/trans_uniq.rs6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/comp/middle/trans_uniq.rs b/src/comp/middle/trans_uniq.rs
index a7649961c74..52efa7aec8b 100644
--- a/src/comp/middle/trans_uniq.rs
+++ b/src/comp/middle/trans_uniq.rs
@@ -12,7 +12,8 @@ import trans::{
     INIT,
     trans_shared_free,
     drop_ty,
-    new_sub_block_ctxt
+    new_sub_block_ctxt,
+    load_if_immediate
 };
 
 export trans_uniq, make_free_glue, type_is_unique_box, copy_val,
@@ -115,7 +116,8 @@ fn duplicate(bcx: @block_ctxt, v: ValueRef, t: ty::t)
     let content_ty = content_ty(bcx, t);
     let {bcx, val: llptr} = alloc_uniq(bcx, t);
 
-    let src = Load(bcx, Load(bcx, v));
+    let src = Load(bcx, v);
+    let src = load_if_immediate(bcx, src, content_ty);
     let dst = llptr;
     let bcx = trans::copy_val(bcx, INIT, dst, src, content_ty);
     Store(bcx, dst, v);