From 32ad218f5aa389d5827af6367d180efe2f5bba38 Mon Sep 17 00:00:00 2001 From: Jakub Konka Date: Tue, 8 Nov 2022 13:50:30 +0100 Subject: [PATCH] aarch64: revert changes to .call --- src/arch/aarch64/CodeGen.zig | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/arch/aarch64/CodeGen.zig b/src/arch/aarch64/CodeGen.zig index 7a8d6d3796..532409c279 100644 --- a/src/arch/aarch64/CodeGen.zig +++ b/src/arch/aarch64/CodeGen.zig @@ -4215,16 +4215,18 @@ fn airCall(self: *Self, inst: Air.Inst.Index, modifier: std.builtin.CallOptions. const result: MCValue = result: { switch (info.return_value) { - .register => { - // Save function return value in a callee saved register - break :result try self.copyToNewRegister(inst, info.return_value); + .register => |reg| { + if (RegisterManager.indexOfReg(&callee_preserved_regs, reg) == null) { + // Save function return value in a callee saved register + break :result try self.copyToNewRegister(inst, info.return_value); + } }, else => {}, } break :result info.return_value; }; - if (args.len <= Liveness.bpi - 2) { + if (args.len + 1 <= Liveness.bpi - 1) { var buf = [1]Air.Inst.Ref{.none} ** (Liveness.bpi - 1); buf[0] = callee; std.mem.copy(Air.Inst.Ref, buf[1..], args);