about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2010-12-07 12:34:10 -0800
committerPatrick Walton <pcwalton@mimiga.net>2010-12-07 12:34:10 -0800
commite558ff907f1df4a2b67a58d37cbc11c0172d1eb6 (patch)
tree1f8a0d502304132001fa360ae63f2dfc2eeb2fd1
parent7f85945b054ff5b991ae1be021882ba15f56d416 (diff)
rustc: Allow callees to use alias args
-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 947233a465e..d49443ef84d 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;
     }
 }