| ... | ... | @@ -1081,6 +1081,13 @@ fn airCall(self: *Self, inst: Air.Inst.Index, modifier: std.builtin.CallOptions. |
| 1081 | 1081 | // (SCD 2.4.1, page 3P-10) |
| 1082 | 1082 | try self.spillConditionFlagsIfOccupied(); |
| 1083 | 1083 | |
| 1084 | // Save caller-saved registers, but crucially *after* we save the |
| 1085 | // compare flags as saving compare flags may require a new |
| 1086 | // caller-saved register |
| 1087 | for (abi.caller_preserved_regs) |reg| { |
| 1088 | try self.register_manager.getReg(reg, null); |
| 1089 | } |
| 1090 | |
| 1084 | 1091 | for (info.args) |mc_arg, arg_i| { |
| 1085 | 1092 | const arg = args[arg_i]; |
| 1086 | 1093 | const arg_ty = self.air.typeOf(arg); |