mirror of
https://github.com/ziglang/zig.git
synced 2025-12-30 01:53:16 +00:00
stage2: add tweak to please Apple re stack alignment
This is more like a temp hack than anything else - I think the mechanism we use for adjusting the stack when pushing args onto the stack could/should be reused - i.e., we should just calculate the stack alignment before each call and then reset the `rsp` rather than relying on the current hack in `gen()` logic.
This commit is contained in:
parent
df6c0067b2
commit
7c831cc266
@ -512,9 +512,11 @@ fn gen(self: *Self) InnerError!void {
|
||||
});
|
||||
}
|
||||
while (self.stack_args_relocs.popOrNull()) |index| {
|
||||
// TODO like above, gotta figure out the alignment shenanigans for macOS, etc.
|
||||
const adjustment = if (self.target.isDarwin()) 2 * stack_adjustment else stack_adjustment;
|
||||
// +16 bytes to account for saved return address of the `call` instruction and
|
||||
// `push rbp`.
|
||||
self.mir_instructions.items(.data)[index].imm += stack_adjustment + aligned_stack_end + 16;
|
||||
self.mir_instructions.items(.data)[index].imm += adjustment + aligned_stack_end + 16;
|
||||
}
|
||||
} else {
|
||||
_ = try self.addInst(.{
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user