aboutsummaryrefslogtreecommitdiff
path: root/src/comp/middle
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 /src/comp/middle
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).
Diffstat (limited to 'src/comp/middle')
-rw-r--r--src/comp/middle/trans.rs6
1 files changed, 5 insertions, 1 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;