diff --git a/src/comp/middle/trans.rs b/src/comp/middle/trans.rs index 99ac225f8eee..6fdc84f3ac14 100644 --- a/src/comp/middle/trans.rs +++ b/src/comp/middle/trans.rs @@ -4403,7 +4403,11 @@ fn trans_args(@block_ctxt cx, lv = trans_lval(bcx, e); } else { auto r = trans_expr(bcx, e); - lv = lval_val(r.bcx, r.val); + if (type_is_immediate(ty.expr_ty(e))) { + lv = lval_val(r.bcx, r.val); + } else { + lv = lval_mem(r.bcx, r.val); + } } bcx = lv.res.bcx; diff --git a/src/test/run-pass/lib-deque.rs b/src/test/run-pass/lib-deque.rs index 4361a1cf79c6..aed026736815 100644 --- a/src/test/run-pass/lib-deque.rs +++ b/src/test/run-pass/lib-deque.rs @@ -210,29 +210,19 @@ fn main() { test_simple(); log "*** end test simple"; - /* - * FIXME: Causes "Invalid read of size 4" under valgrind. - log "*** test boxes"; test_boxes(@5, @72, @64, @175); log "*** end test boxes"; - */ - log "test parameterized: int"; let eqfn[int] eq1 = inteq; test_parameterized[int](eq1, 5, 72, 64, 175); - /* - * FIXME: Appears to segfault after an upcall_grow_task - log "*** test parameterized: @int"; let eqfn[@int] eq2 = intboxeq; test_parameterized[@int](eq2, @5, @72, @64, @175); log "*** end test parameterized @int"; - */ - log "test parameterized: taggy"; let eqfn[taggy] eq3 = taggyeq; test_parameterized[taggy](eq3,