aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPatrick Walton <[email protected]>2010-12-07 12:34:10 -0800
committerPatrick Walton <[email protected]>2010-12-07 12:34:10 -0800
commite558ff907f1df4a2b67a58d37cbc11c0172d1eb6 (patch)
tree1f8a0d502304132001fa360ae63f2dfc2eeb2fd1 /src
parentrustc: Translate function calls with alias parameters (though the callee can'... (diff)
downloadrust-e558ff907f1df4a2b67a58d37cbc11c0172d1eb6.tar.xz
rust-e558ff907f1df4a2b67a58d37cbc11c0172d1eb6.zip
rustc: Allow callees to use alias args
Diffstat (limited to 'src')
-rw-r--r--src/comp/middle/trans.rs15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/comp/middle/trans.rs b/src/comp/middle/trans.rs
index 947233a4..d49443ef 100644
--- a/src/comp/middle/trans.rs
+++ b/src/comp/middle/trans.rs
@@ -1885,12 +1885,15 @@ fn copy_args_to_allocas(@block_ctxt cx, vec[ast.arg] args,
let uint arg_n = 0u;
for (ast.arg aarg in args) {
- auto arg_t = type_of_arg(cx.fcx.ccx, arg_tys.(arg_n));
- auto alloca = cx.build.Alloca(arg_t);
- auto argval = cx.fcx.llargs.get(aarg.id);
- cx.build.Store(argval, alloca);
- // Overwrite the llargs entry for this arg with its alloca.
- cx.fcx.llargs.insert(aarg.id, alloca);
+ if (aarg.mode != ast.alias) {
+ auto arg_t = type_of_arg(cx.fcx.ccx, arg_tys.(arg_n));
+ auto alloca = cx.build.Alloca(arg_t);
+ auto argval = cx.fcx.llargs.get(aarg.id);
+ cx.build.Store(argval, alloca);
+ // Overwrite the llargs entry for this arg with its alloca.
+ cx.fcx.llargs.insert(aarg.id, alloca);
+ }
+
arg_n += 1u;
}
}