aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjoachimschmidt557 <joachim.schmidt557@outlook.com>2021-01-08 22:11:49 +0100
committerAndrew Kelley <andrew@ziglang.org>2021-01-10 00:41:02 -0800
commita7da90071e23f22158ef508a263cb3a4054554dd (patch)
tree1d9b9d1d521333aad22050ed6d014bf13cb8af3a /src
parent29928af6005997d2b02b4c3a3576a696a02fa269 (diff)
downloadzig-a7da90071e23f22158ef508a263cb3a4054554dd.tar.gz
zig-a7da90071e23f22158ef508a263cb3a4054554dd.zip
stage2: fix bug in genArg
When an argument is unused in the function body, still increment arg_index so we still select the correct arguments in the args slice.
Diffstat (limited to 'src')
-rw-r--r--src/codegen.zig6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/codegen.zig b/src/codegen.zig
index dd37d3b025..eba5cb7913 100644
--- a/src/codegen.zig
+++ b/src/codegen.zig
@@ -1480,6 +1480,9 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
}
fn genArg(self: *Self, inst: *ir.Inst.Arg) !MCValue {
+ const arg_index = self.arg_index;
+ self.arg_index += 1;
+
if (FreeRegInt == u0) {
return self.fail(inst.base.src, "TODO implement Register enum for {}", .{self.target.cpu.arch});
}
@@ -1488,8 +1491,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
try self.registers.ensureCapacity(self.gpa, self.registers.count() + 1);
- const result = self.args[self.arg_index];
- self.arg_index += 1;
+ const result = self.args[arg_index];
const name_with_null = inst.name[0 .. mem.lenZ(inst.name) + 1];
switch (result) {