authorgravatar for joachim.schmidt557@outlook.comJoachim Schmidt <joachim.schmidt557@outlook.com> 2021-01-08 22:11:49+01:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2021-01-10 00:41:02-08:00
loga7da90071e23f22158ef508a263cb3a4054554dd
tree1d9b9d1d521333aad22050ed6d014bf13cb8af3a
parent29928af6005997d2b02b4c3a3576a696a02fa269

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.

1 files changed, 4 insertions(+), 2 deletions(-)

src/codegen.zig+4-2
......@@ -1480,6 +1480,9 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
14801480 }
14811481
14821482 fn genArg(self: *Self, inst: *ir.Inst.Arg) !MCValue {
1483 const arg_index = self.arg_index;
1484 self.arg_index += 1;
1485
14831486 if (FreeRegInt == u0) {
14841487 return self.fail(inst.base.src, "TODO implement Register enum for {}", .{self.target.cpu.arch});
14851488 }
......@@ -1488,8 +1491,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
14881491
14891492 try self.registers.ensureCapacity(self.gpa, self.registers.count() + 1);
14901493
1491 const result = self.args[self.arg_index];
1492 self.arg_index += 1;
1494 const result = self.args[arg_index];
14931495
14941496 const name_with_null = inst.name[0 .. mem.lenZ(inst.name) + 1];
14951497 switch (result) {