stage2 codegen: Make sure function return value is in a callee

preserved register
This commit is contained in:
joachimschmidt557
2021-03-27 22:23:14 +01:00
committed by Jakub Konka
parent e088a17f56
commit 1b657e6e41
2 changed files with 51 additions and 0 deletions

View File

@@ -2194,6 +2194,16 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
unreachable;
}
switch (info.return_value) {
.register => |reg| {
if (Register.allocIndex(reg) == null) {
// Save function return value in a callee saved register
return try self.copyToNewRegister(&inst.base, info.return_value);
}
},
else => {},
}
return info.return_value;
}