about summary refs log tree commit diff
diff options
context:
space:
mode:
-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 -*-