@@ -458,10 +458,15 @@ const DataLayoutBuilder = struct {
458458 if (idx != size) try writer.print(":{d}", .{idx});
459459 }
460460 }
461- if (self.target.cpu.arch.isArmOrThumb()) try writer.writeAll("-Fi8") // for thumb interwork
461+ if (self.target.cpu.arch.isArmOrThumb())
462+ try writer.writeAll("-Fi8") // for thumb interwork
462463 else if (self.target.cpu.arch == .powerpc64 and
463- self.target.os.tag != .freebsd and self.target.abi != .musl)
464+ self.target.os.tag != .freebsd and
465+ self.target.os.tag != .openbsd and
466+ !self.target.abi.isMusl())
464467 try writer.writeAll("-Fi64")
468+ else if (self.target.cpu.arch.isPowerPC() and self.target.os.tag == .aix)
469+ try writer.writeAll(if (self.target.cpu.arch.isPowerPC64()) "-Fi64" else "-Fi32")
465470 else if (self.target.cpu.arch.isPowerPC())
466471 try writer.writeAll("-Fn32");
467472 if (self.target.cpu.arch != .hexagon) {
@@ -574,6 +579,8 @@ const DataLayoutBuilder = struct {
574579 self.target.os.tag == .uefi or self.target.os.tag == .windows or
575580 self.target.cpu.arch == .riscv32)
576581 try writer.print("-S{d}", .{stack_abi});
582+ if (self.target.cpu.arch.isAARCH64())
583+ try writer.writeAll("-Fn32");
577584 switch (self.target.cpu.arch) {
578585 .hexagon, .ve => {
579586 try self.typeAlignment(.vector, 32, 128, 128, true, writer);
0 commit comments