stage2: sparc64: Spill CCR before doing calls

This commit is contained in:
Koakuma
2022-06-01 08:58:14 +07:00
parent 2dfe307d60
commit 97c43afefe

View File

@@ -1047,6 +1047,11 @@ fn airCall(self: *Self, inst: Air.Inst.Index, modifier: std.builtin.CallOptions.
var info = try self.resolveCallingConventionValues(fn_ty, .caller);
defer info.deinit(self);
// CCR is volatile across function calls
// (SCD 2.4.1, page 3P-10)
try self.spillCompareFlagsIfOccupied();
for (info.args) |mc_arg, arg_i| {
const arg = args[arg_i];
const arg_ty = self.air.typeOf(arg);