From 777a53631301b548be6c195361663178a926c4a3 Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Fri, 23 Sep 2011 23:00:46 -0700 Subject: [PATCH] Support non-immediates in unique-box type glue Issue #409 --- src/comp/middle/trans_uniq.rs | 6 ++++-- src/test/run-pass/expr-alt-generic-unique1.rs | 1 - src/test/run-pass/expr-block-generic-unique1.rs | 1 - 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/comp/middle/trans_uniq.rs b/src/comp/middle/trans_uniq.rs index a7649961c745..52efa7aec8ba 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 ba606e78d340..cda82c2ca089 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 4048f2497009..feff0faad929 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 -*-