aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGraydon Hoare <[email protected]>2011-04-13 15:21:54 -0700
committerGraydon Hoare <[email protected]>2011-04-13 15:21:54 -0700
commitafeb3a417c93a0a892e088466191c9eb6abc6231 (patch)
tree31a458e0ab3f34f51128374b012768053abaa6e0
parentAdd generic-temporary.rs minimal test showing cause of lib-deque.rs failure o... (diff)
downloadrust-afeb3a417c93a0a892e088466191c9eb6abc6231.tar.xz
rust-afeb3a417c93a0a892e088466191c9eb6abc6231.zip
Fix temporary-spilling logic in trans_args, uncomment most of lib-deque.rs (which now passes on stage0).
-rw-r--r--src/comp/middle/trans.rs6
-rw-r--r--src/test/run-pass/lib-deque.rs10
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,