about summary refs log tree commit diff
path: root/src
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
parent856acbf66d21a20bd115f11c55c7abecd1f4c92e (diff)
downloadrust-777a53631301b548be6c195361663178a926c4a3.tar.gz
rust-777a53631301b548be6c195361663178a926c4a3.zip
Support non-immediates in unique-box type glue
Issue #409
Diffstat (limited to 'src')
-rw-r--r--src/comp/middle/trans_uniq.rs6
-rw-r--r--src/test/run-pass/expr-alt-generic-unique1.rs1
-rw-r--r--src/test/run-pass/expr-block-generic-unique1.rs1
3 files changed, 4 insertions, 4 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);
diff --git a/src/test/run-pass/expr-alt-generic-unique1.rs b/src/test/run-pass/expr-alt-generic-unique1.rs
index ba606e78d34..cda82c2ca08 100644
--- a/src/test/run-pass/expr-alt-generic-unique1.rs
+++ b/src/test/run-pass/expr-alt-generic-unique1.rs
@@ -1,4 +1,3 @@
-// xfail-test
 
 
 // -*- rust -*-
diff --git a/src/test/run-pass/expr-block-generic-unique1.rs b/src/test/run-pass/expr-block-generic-unique1.rs
index 4048f249700..feff0faad92 100644
--- a/src/test/run-pass/expr-block-generic-unique1.rs
+++ b/src/test/run-pass/expr-block-generic-unique1.rs
@@ -1,4 +1,3 @@
-// xfail-test
 
 
 // -*- rust -*-