diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/comp/middle/trans.rs | 6 | ||||
| -rw-r--r-- | src/test/run-pass/lib-deque.rs | 10 |
2 files changed, 5 insertions, 11 deletions
diff --git a/src/comp/middle/trans.rs b/src/comp/middle/trans.rs index 99ac225f..6fdc84f3 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 4361a1cf..aed02673 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, |