authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2023-07-25 22:15:02-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2023-07-26 16:49:32-07:00
logf9717f87f55cac0d986b6e3a47eba899a63912fb
treeab466fbbbf184475a3b2a2a5396514a53d27cc49
parenta707f380a5f54b70ee7664708d83c9002de6644d

llvm: fix data layout on ios

Closes #16549

2 files changed, 12 insertions(+), 2 deletions(-)

src/codegen/llvm.zig+2-2
...@@ -429,7 +429,7 @@ const DataLayoutBuilder = struct {...@@ -429,7 +429,7 @@ const DataLayoutBuilder = struct {
429 if (backendSupportsF16(self.target)) try self.typeAlignment(.float, 16, 16, 16, false, writer);429 if (backendSupportsF16(self.target)) try self.typeAlignment(.float, 16, 16, 16, false, writer);
430 try self.typeAlignment(.float, 32, 32, 32, false, writer);430 try self.typeAlignment(.float, 32, 32, 32, false, writer);
431 try self.typeAlignment(.float, 64, 64, 64, false, writer);431 try self.typeAlignment(.float, 64, 64, 64, false, writer);
432 if (backendSupportsF80(self.target)) try self.typeAlignment(.float, 80, 0, 0, false, writer);432 if (self.target.cpu.arch.isX86()) try self.typeAlignment(.float, 80, 0, 0, false, writer);
433 try self.typeAlignment(.float, 128, 128, 128, false, writer);433 try self.typeAlignment(.float, 128, 128, 128, false, writer);
434 }434 }
435 switch (self.target.cpu.arch) {435 switch (self.target.cpu.arch) {
...@@ -585,7 +585,7 @@ const DataLayoutBuilder = struct {...@@ -585,7 +585,7 @@ const DataLayoutBuilder = struct {
585 abi = size;585 abi = size;
586 pref = size;586 pref = size;
587 } else switch (self.target.os.tag) {587 } else switch (self.target.os.tag) {
588 .macos => {},588 .macos, .ios => {},
589 .uefi, .windows => {589 .uefi, .windows => {
590 pref = size;590 pref = size;
591 force_abi = size >= 32;591 force_abi = size >= 32;
test/llvm_targets.zig+10
...@@ -3,6 +3,8 @@ const Cases = @import("src/Cases.zig");...@@ -3,6 +3,8 @@ const Cases = @import("src/Cases.zig");
33
4const targets = [_]std.zig.CrossTarget{4const targets = [_]std.zig.CrossTarget{
5 .{ .cpu_arch = .aarch64, .os_tag = .freestanding, .abi = .none },5 .{ .cpu_arch = .aarch64, .os_tag = .freestanding, .abi = .none },
6 .{ .cpu_arch = .aarch64, .os_tag = .ios, .abi = .none },
7 .{ .cpu_arch = .aarch64, .os_tag = .ios, .abi = .simulator },
6 .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .none },8 .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .none },
7 .{ .cpu_arch = .aarch64, .os_tag = .macos, .abi = .none },9 .{ .cpu_arch = .aarch64, .os_tag = .macos, .abi = .none },
8 .{ .cpu_arch = .aarch64, .os_tag = .uefi, .abi = .none },10 .{ .cpu_arch = .aarch64, .os_tag = .uefi, .abi = .none },
...@@ -102,6 +104,14 @@ const targets = [_]std.zig.CrossTarget{...@@ -102,6 +104,14 @@ const targets = [_]std.zig.CrossTarget{
102 .{ .cpu_arch = .x86, .os_tag = .windows, .abi = .msvc },104 .{ .cpu_arch = .x86, .os_tag = .windows, .abi = .msvc },
103 .{ .cpu_arch = .x86_64, .os_tag = .freebsd, .abi = .none },105 .{ .cpu_arch = .x86_64, .os_tag = .freebsd, .abi = .none },
104 .{ .cpu_arch = .x86_64, .os_tag = .freestanding, .abi = .none },106 .{ .cpu_arch = .x86_64, .os_tag = .freestanding, .abi = .none },
107 .{
108 .cpu_arch = .x86_64,
109 .os_tag = .freestanding,
110 .abi = .none,
111 .cpu_features_add = std.Target.x86.featureSet(&.{.soft_float}),
112 .cpu_features_sub = std.Target.x86.featureSet(&.{ .mmx, .sse, .sse2, .avx, .avx2 }),
113 },
114 .{ .cpu_arch = .x86_64, .os_tag = .ios, .abi = .simulator },
105 .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .none },115 .{ .cpu_arch = .x86_64, .os_tag = .linux, .abi = .none },
106 .{ .cpu_arch = .x86_64, .os_tag = .macos, .abi = .none },116 .{ .cpu_arch = .x86_64, .os_tag = .macos, .abi = .none },
107 .{ .cpu_arch = .x86_64, .os_tag = .uefi, .abi = .none },117 .{ .cpu_arch = .x86_64, .os_tag = .uefi, .abi = .none },