diff options
| author | Alex Rønne Petersen <alex@alexrp.com> | 2024-10-25 11:10:28 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-25 11:10:28 +0200 |
| commit | 03d0e296cb8a8afb2bd81c030b31e96e6e2940c7 (patch) | |
| tree | f340a6c090dd562ec0d710573d66e1651ced5bd5 /src/codegen | |
| parent | 5769592cdda3c14a37b8c381219343052609cbbc (diff) | |
| parent | 6c1e306484530bfeaf26450fb83a70ff1c323bcd (diff) | |
| download | zig-03d0e296cb8a8afb2bd81c030b31e96e6e2940c7.tar.gz zig-03d0e296cb8a8afb2bd81c030b31e96e6e2940c7.zip | |
Merge pull request #21710 from alexrp/function-alignment
Some improvements to the compiler's handling of function alignment
Diffstat (limited to 'src/codegen')
| -rw-r--r-- | src/codegen/llvm.zig | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig index f19577cac8..88711288a0 100644 --- a/src/codegen/llvm.zig +++ b/src/codegen/llvm.zig @@ -458,10 +458,15 @@ const DataLayoutBuilder = struct { if (idx != size) try writer.print(":{d}", .{idx}); } } - if (self.target.cpu.arch.isArmOrThumb()) try writer.writeAll("-Fi8") // for thumb interwork + if (self.target.cpu.arch.isArmOrThumb()) + try writer.writeAll("-Fi8") // for thumb interwork else if (self.target.cpu.arch == .powerpc64 and - self.target.os.tag != .freebsd and self.target.abi != .musl) + self.target.os.tag != .freebsd and + self.target.os.tag != .openbsd and + !self.target.abi.isMusl()) try writer.writeAll("-Fi64") + else if (self.target.cpu.arch.isPowerPC() and self.target.os.tag == .aix) + try writer.writeAll(if (self.target.cpu.arch.isPowerPC64()) "-Fi64" else "-Fi32") else if (self.target.cpu.arch.isPowerPC()) try writer.writeAll("-Fn32"); if (self.target.cpu.arch != .hexagon) { @@ -574,6 +579,8 @@ const DataLayoutBuilder = struct { self.target.os.tag == .uefi or self.target.os.tag == .windows or self.target.cpu.arch == .riscv32) try writer.print("-S{d}", .{stack_abi}); + if (self.target.cpu.arch.isAARCH64()) + try writer.writeAll("-Fn32"); switch (self.target.cpu.arch) { .hexagon, .ve => { try self.typeAlignment(.vector, 32, 128, 128, true, writer); |
