aboutsummaryrefslogtreecommitdiff
path: root/src/codegen
diff options
context:
space:
mode:
authorAlex Rønne Petersen <alex@alexrp.com>2024-10-25 11:10:28 +0200
committerGitHub <noreply@github.com>2024-10-25 11:10:28 +0200
commit03d0e296cb8a8afb2bd81c030b31e96e6e2940c7 (patch)
treef340a6c090dd562ec0d710573d66e1651ced5bd5 /src/codegen
parent5769592cdda3c14a37b8c381219343052609cbbc (diff)
parent6c1e306484530bfeaf26450fb83a70ff1c323bcd (diff)
downloadzig-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.zig11
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);