diff options
| author | Patrick Walton <[email protected]> | 2010-12-07 12:34:10 -0800 |
|---|---|---|
| committer | Patrick Walton <[email protected]> | 2010-12-07 12:34:10 -0800 |
| commit | e558ff907f1df4a2b67a58d37cbc11c0172d1eb6 (patch) | |
| tree | 1f8a0d502304132001fa360ae63f2dfc2eeb2fd1 /src | |
| parent | rustc: Translate function calls with alias parameters (though the callee can'... (diff) | |
| download | rust-e558ff907f1df4a2b67a58d37cbc11c0172d1eb6.tar.xz rust-e558ff907f1df4a2b67a58d37cbc11c0172d1eb6.zip | |
rustc: Allow callees to use alias args
Diffstat (limited to 'src')
| -rw-r--r-- | src/comp/middle/trans.rs | 15 |
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; } } |