authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2024-11-29 15:28:54-05:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2024-11-29 15:28:54-05:00
loga47aa9dd9d7f950427aacc360f1302e636234bc2
treea3e4a4fcab9e49f6adb8a5cfdc719f51b5ea4fd4
parentc3821fe4ca8d98d07454fddf2bf25bfc8d7817f2
parent78b8ce5095abf6516dc414b8cf487acedbd0ce99
signaturebadge-check Signed by PGP key B5690EEEBB952194

Merge pull request #22095 from alexrp/test-llvm-emit

Change `llvm_targets` tests to actually emit objects, and fix bugs found as a result

5 files changed, 119 insertions(+), 87 deletions(-)

lib/std/Target.zig+60-17
......@@ -2884,19 +2884,29 @@ pub fn cTypeBitSize(target: Target, c_type: CType) u16 {
28842884 },
28852885 },
28862886
2887 .elfiamcu,
2888 .fuchsia,
2889 .hermit,
2890
2891 .aix,
2892 .haiku,
2893 .hurd,
28872894 .linux,
2895 .plan9,
2896 .rtems,
2897 .serenity,
2898 .zos,
2899
28882900 .freebsd,
2889 .netbsd,
28902901 .dragonfly,
2902 .netbsd,
28912903 .openbsd,
2904
2905 .illumos,
2906 .solaris,
2907
28922908 .wasi,
28932909 .emscripten,
2894 .plan9,
2895 .solaris,
2896 .illumos,
2897 .haiku,
2898 .fuchsia,
2899 .serenity,
29002910 => switch (target.cpu.arch) {
29012911 .msp430 => switch (c_type) {
29022912 .char => return 8,
......@@ -2941,7 +2951,10 @@ pub fn cTypeBitSize(target: Target, c_type: CType) u16 {
29412951 .longdouble => switch (target.cpu.arch) {
29422952 .x86 => switch (target.abi) {
29432953 .android => return 64,
2944 else => return 80,
2954 else => switch (target.os.tag) {
2955 .elfiamcu => return 64,
2956 else => return 80,
2957 },
29452958 },
29462959
29472960 .powerpc,
......@@ -2955,7 +2968,7 @@ pub fn cTypeBitSize(target: Target, c_type: CType) u16 {
29552968 .muslx32,
29562969 => return 64,
29572970 else => switch (target.os.tag) {
2958 .freebsd, .netbsd, .openbsd => return 64,
2971 .aix, .freebsd, .netbsd, .openbsd => return 64,
29592972 else => return 128,
29602973 },
29612974 },
......@@ -2971,7 +2984,7 @@ pub fn cTypeBitSize(target: Target, c_type: CType) u16 {
29712984 .muslx32,
29722985 => return 64,
29732986 else => switch (target.os.tag) {
2974 .freebsd, .openbsd => return 64,
2987 .aix, .freebsd, .openbsd => return 64,
29752988 else => return 128,
29762989 },
29772990 },
......@@ -3049,10 +3062,17 @@ pub fn cTypeBitSize(target: Target, c_type: CType) u16 {
30493062 .gnux32, .muslx32 => return 32,
30503063 else => return 64,
30513064 },
3052 else => return 64,
3065 else => switch (target.abi) {
3066 .ilp32 => return 32,
3067 else => return 64,
3068 },
30533069 },
30543070 .longlong, .ulonglong, .double => return 64,
30553071 .longdouble => switch (target.cpu.arch) {
3072 .aarch64 => switch (target.os.tag) {
3073 .bridgeos => return 128,
3074 else => return 64,
3075 },
30563076 .x86 => switch (target.abi) {
30573077 .android => return 64,
30583078 else => return 80,
......@@ -3104,13 +3124,7 @@ pub fn cTypeBitSize(target: Target, c_type: CType) u16 {
31043124 },
31053125
31063126 .ps3,
3107 .zos,
3108 .rtems,
3109 .aix,
3110 .elfiamcu,
31113127 .contiki,
3112 .hermit,
3113 .hurd,
31143128 .opengl,
31153129 => @panic("TODO specify the C integer and float type sizes for this OS"),
31163130 }
......@@ -3121,6 +3135,10 @@ pub fn cTypeAlignment(target: Target, c_type: CType) u16 {
31213135 switch (target.cpu.arch) {
31223136 .avr => return 1,
31233137 .x86 => switch (target.os.tag) {
3138 .elfiamcu => switch (c_type) {
3139 .longlong, .ulonglong, .double => return 4,
3140 else => {},
3141 },
31243142 .windows, .uefi => switch (c_type) {
31253143 .longlong, .ulonglong, .double => return 8,
31263144 .longdouble => switch (target.abi) {
......@@ -3131,6 +3149,20 @@ pub fn cTypeAlignment(target: Target, c_type: CType) u16 {
31313149 },
31323150 else => {},
31333151 },
3152 .powerpc, .powerpcle, .powerpc64, .powerpc64le => switch (target.os.tag) {
3153 .aix => switch (c_type) {
3154 .double, .longdouble => return 4,
3155 else => {},
3156 },
3157 else => {},
3158 },
3159 .wasm32, .wasm64 => switch (target.os.tag) {
3160 .emscripten => switch (c_type) {
3161 .longdouble => return 8,
3162 else => {},
3163 },
3164 else => {},
3165 },
31343166 else => {},
31353167 }
31363168
......@@ -3244,6 +3276,10 @@ pub fn cTypePreferredAlignment(target: Target, c_type: CType) u16 {
32443276 },
32453277 .avr => return 1,
32463278 .x86 => switch (target.os.tag) {
3279 .elfiamcu => switch (c_type) {
3280 .longlong, .ulonglong, .double, .longdouble => return 4,
3281 else => {},
3282 },
32473283 .windows, .uefi => switch (c_type) {
32483284 .longdouble => switch (target.abi) {
32493285 .gnu, .gnuilp32, .ilp32, .cygnus => return 4,
......@@ -3256,6 +3292,13 @@ pub fn cTypePreferredAlignment(target: Target, c_type: CType) u16 {
32563292 else => {},
32573293 },
32583294 },
3295 .wasm32, .wasm64 => switch (target.os.tag) {
3296 .emscripten => switch (c_type) {
3297 .longdouble => return 8,
3298 else => {},
3299 },
3300 else => {},
3301 },
32593302 else => {},
32603303 }
32613304
src/codegen/llvm.zig+1-2
......@@ -280,8 +280,7 @@ pub fn targetTriple(allocator: Allocator, target: std.Target) ![]const u8 {
280280 .cygnus => "cygnus",
281281 .simulator => "simulator",
282282 .macabi => "macabi",
283 .ohos => "ohos",
284 .ohoseabi => "ohoseabi",
283 .ohos, .ohoseabi => "ohos",
285284 };
286285 try llvm_triple.appendSlice(llvm_abi);
287286
src/link/MachO.zig+5-1
......@@ -4191,7 +4191,11 @@ pub const Platform = struct {
41914191 return .{
41924192 .os_tag = target.os.tag,
41934193 .abi = target.abi,
4194 .version = target.os.version_range.semver.min,
4194 // This should use semver once we determine the version history.
4195 .version = if (target.os.tag == .bridgeos)
4196 .{ .major = 0, .minor = 0, .patch = 0 }
4197 else
4198 target.os.version_range.semver.min,
41954199 };
41964200 }
41974201
test/llvm_targets.zig+52-50
......@@ -15,13 +15,12 @@ const targets = [_]std.Target.Query{
1515 .{ .cpu_arch = .aarch64, .os_tag = .ios, .abi = .simulator },
1616 .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .android },
1717 .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .gnu },
18 .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .gnuilp32 },
18 .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .musl },
1919 .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .none },
2020 .{ .cpu_arch = .aarch64, .os_tag = .linux, .abi = .ohos },
2121 .{ .cpu_arch = .aarch64, .os_tag = .macos, .abi = .none },
2222 .{ .cpu_arch = .aarch64, .os_tag = .netbsd, .abi = .none },
2323 .{ .cpu_arch = .aarch64, .os_tag = .openbsd, .abi = .none },
24 .{ .cpu_arch = .aarch64, .os_tag = .rtems, .abi = .ilp32 },
2524 .{ .cpu_arch = .aarch64, .os_tag = .rtems, .abi = .none },
2625 .{ .cpu_arch = .aarch64, .os_tag = .serenity, .abi = .none },
2726 .{ .cpu_arch = .aarch64, .os_tag = .tvos, .abi = .none },
......@@ -38,17 +37,17 @@ const targets = [_]std.Target.Query{
3837
3938 .{ .cpu_arch = .aarch64_be, .os_tag = .freestanding, .abi = .none },
4039 .{ .cpu_arch = .aarch64_be, .os_tag = .linux, .abi = .gnu },
41 .{ .cpu_arch = .aarch64_be, .os_tag = .linux, .abi = .gnuilp32 },
40 .{ .cpu_arch = .aarch64_be, .os_tag = .linux, .abi = .musl },
4241 .{ .cpu_arch = .aarch64_be, .os_tag = .linux, .abi = .none },
4342 .{ .cpu_arch = .aarch64_be, .os_tag = .netbsd, .abi = .none },
4443
4544 .{ .cpu_arch = .amdgcn, .os_tag = .amdhsa, .abi = .none },
46 .{ .cpu_arch = .amdgcn, .os_tag = .amdpal, .abi = .none },
47 .{ .cpu_arch = .amdgcn, .os_tag = .mesa3d, .abi = .none },
45 // .{ .cpu_arch = .amdgcn, .os_tag = .amdpal, .abi = .none },
46 // .{ .cpu_arch = .amdgcn, .os_tag = .mesa3d, .abi = .none },
4847
49 .{ .cpu_arch = .arc, .os_tag = .freestanding, .abi = .none },
50 .{ .cpu_arch = .arc, .os_tag = .linux, .abi = .gnu },
51 .{ .cpu_arch = .arc, .os_tag = .linux, .abi = .none },
48 // .{ .cpu_arch = .arc, .os_tag = .freestanding, .abi = .none },
49 // .{ .cpu_arch = .arc, .os_tag = .linux, .abi = .gnu },
50 // .{ .cpu_arch = .arc, .os_tag = .linux, .abi = .none },
5251
5352 .{ .cpu_arch = .arm, .os_tag = .freebsd, .abi = .eabi },
5453 .{ .cpu_arch = .arm, .os_tag = .freebsd, .abi = .eabihf },
......@@ -70,8 +69,8 @@ const targets = [_]std.Target.Query{
7069 .{ .cpu_arch = .arm, .os_tag = .openbsd, .abi = .eabihf },
7170 .{ .cpu_arch = .arm, .os_tag = .rtems, .abi = .eabi },
7271 .{ .cpu_arch = .arm, .os_tag = .rtems, .abi = .eabihf },
73 .{ .cpu_arch = .arm, .os_tag = .uefi, .abi = .eabi },
74 .{ .cpu_arch = .arm, .os_tag = .uefi, .abi = .eabihf },
72 // .{ .cpu_arch = .arm, .os_tag = .uefi, .abi = .eabi },
73 // .{ .cpu_arch = .arm, .os_tag = .uefi, .abi = .eabihf },
7574
7675 .{ .cpu_arch = .armeb, .os_tag = .freebsd, .abi = .eabi },
7776 .{ .cpu_arch = .armeb, .os_tag = .freebsd, .abi = .eabihf },
......@@ -95,36 +94,37 @@ const targets = [_]std.Target.Query{
9594
9695 .{ .cpu_arch = .bpfel, .os_tag = .freestanding, .abi = .none },
9796
98 .{ .cpu_arch = .csky, .os_tag = .freestanding, .abi = .eabi },
99 .{ .cpu_arch = .csky, .os_tag = .freestanding, .abi = .eabihf },
100 .{ .cpu_arch = .csky, .os_tag = .linux, .abi = .eabi },
101 .{ .cpu_arch = .csky, .os_tag = .linux, .abi = .eabihf },
102 .{ .cpu_arch = .csky, .os_tag = .linux, .abi = .gnueabi },
103 .{ .cpu_arch = .csky, .os_tag = .linux, .abi = .gnueabihf },
97 // .{ .cpu_arch = .csky, .os_tag = .freestanding, .abi = .eabi },
98 // .{ .cpu_arch = .csky, .os_tag = .freestanding, .abi = .eabihf },
99 // .{ .cpu_arch = .csky, .os_tag = .linux, .abi = .eabi },
100 // .{ .cpu_arch = .csky, .os_tag = .linux, .abi = .eabihf },
101 // .{ .cpu_arch = .csky, .os_tag = .linux, .abi = .gnueabi },
102 // .{ .cpu_arch = .csky, .os_tag = .linux, .abi = .gnueabihf },
104103
105104 .{ .cpu_arch = .hexagon, .os_tag = .freestanding, .abi = .none },
106105 .{ .cpu_arch = .hexagon, .os_tag = .linux, .abi = .none },
107106
108 .{ .cpu_arch = .lanai, .os_tag = .freestanding, .abi = .none },
107 // .{ .cpu_arch = .lanai, .os_tag = .freestanding, .abi = .none },
109108
110 .{ .cpu_arch = .loongarch32, .os_tag = .freestanding, .abi = .none },
111 .{ .cpu_arch = .loongarch32, .os_tag = .linux, .abi = .none },
112 .{ .cpu_arch = .loongarch32, .os_tag = .uefi, .abi = .none },
109 // .{ .cpu_arch = .loongarch32, .os_tag = .freestanding, .abi = .none },
110 // .{ .cpu_arch = .loongarch32, .os_tag = .linux, .abi = .none },
111 // .{ .cpu_arch = .loongarch32, .os_tag = .uefi, .abi = .none },
113112
114113 .{ .cpu_arch = .loongarch64, .os_tag = .freestanding, .abi = .none },
115114 .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .gnu },
116 .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .gnuf32 },
115 // .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .gnuf32 },
117116 .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .gnusf },
118117 .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .musl },
119118 .{ .cpu_arch = .loongarch64, .os_tag = .linux, .abi = .none },
120 .{ .cpu_arch = .loongarch64, .os_tag = .uefi, .abi = .none },
119 // .{ .cpu_arch = .loongarch64, .os_tag = .uefi, .abi = .none },
121120
122 .{ .cpu_arch = .m68k, .os_tag = .freestanding, .abi = .none },
123 .{ .cpu_arch = .m68k, .os_tag = .haiku, .abi = .none },
124 .{ .cpu_arch = .m68k, .os_tag = .linux, .abi = .gnu },
125 .{ .cpu_arch = .m68k, .os_tag = .linux, .abi = .none },
126 .{ .cpu_arch = .m68k, .os_tag = .netbsd, .abi = .none },
127 .{ .cpu_arch = .m68k, .os_tag = .rtems, .abi = .none },
121 // .{ .cpu_arch = .m68k, .os_tag = .freestanding, .abi = .none },
122 // .{ .cpu_arch = .m68k, .os_tag = .haiku, .abi = .none },
123 // .{ .cpu_arch = .m68k, .os_tag = .linux, .abi = .gnu },
124 // .{ .cpu_arch = .m68k, .os_tag = .linux, .abi = .musl },
125 // .{ .cpu_arch = .m68k, .os_tag = .linux, .abi = .none },
126 // .{ .cpu_arch = .m68k, .os_tag = .netbsd, .abi = .none },
127 // .{ .cpu_arch = .m68k, .os_tag = .rtems, .abi = .none },
128128
129129 .{ .cpu_arch = .mips, .os_tag = .freebsd, .abi = .eabi },
130130 .{ .cpu_arch = .mips, .os_tag = .freebsd, .abi = .eabihf },
......@@ -178,12 +178,12 @@ const targets = [_]std.Target.Query{
178178
179179 .{ .cpu_arch = .msp430, .os_tag = .freestanding, .abi = .none },
180180
181 .{ .cpu_arch = .nvptx, .os_tag = .cuda, .abi = .none },
182 .{ .cpu_arch = .nvptx, .os_tag = .nvcl, .abi = .none },
183 .{ .cpu_arch = .nvptx64, .os_tag = .cuda, .abi = .none },
184 .{ .cpu_arch = .nvptx64, .os_tag = .nvcl, .abi = .none },
181 // .{ .cpu_arch = .nvptx, .os_tag = .cuda, .abi = .none },
182 // .{ .cpu_arch = .nvptx, .os_tag = .nvcl, .abi = .none },
183 // .{ .cpu_arch = .nvptx64, .os_tag = .cuda, .abi = .none },
184 // .{ .cpu_arch = .nvptx64, .os_tag = .nvcl, .abi = .none },
185185
186 .{ .cpu_arch = .powerpc, .os_tag = .aix, .abi = .eabihf },
186 // .{ .cpu_arch = .powerpc, .os_tag = .aix, .abi = .eabihf },
187187 .{ .cpu_arch = .powerpc, .os_tag = .freebsd, .abi = .eabi },
188188 .{ .cpu_arch = .powerpc, .os_tag = .freebsd, .abi = .eabihf },
189189 .{ .cpu_arch = .powerpc, .os_tag = .freestanding, .abi = .eabi },
......@@ -206,7 +206,7 @@ const targets = [_]std.Target.Query{
206206 .{ .cpu_arch = .powerpcle, .os_tag = .freestanding, .abi = .eabi },
207207 .{ .cpu_arch = .powerpcle, .os_tag = .freestanding, .abi = .eabihf },
208208
209 .{ .cpu_arch = .powerpc64, .os_tag = .aix, .abi = .none },
209 // .{ .cpu_arch = .powerpc64, .os_tag = .aix, .abi = .none },
210210 .{ .cpu_arch = .powerpc64, .os_tag = .freebsd, .abi = .none },
211211 .{ .cpu_arch = .powerpc64, .os_tag = .freestanding, .abi = .none },
212212 .{ .cpu_arch = .powerpc64, .os_tag = .linux, .abi = .gnu },
......@@ -226,7 +226,7 @@ const targets = [_]std.Target.Query{
226226 .{ .cpu_arch = .riscv32, .os_tag = .linux, .abi = .musl },
227227 .{ .cpu_arch = .riscv32, .os_tag = .linux, .abi = .none },
228228 .{ .cpu_arch = .riscv32, .os_tag = .rtems, .abi = .none },
229 .{ .cpu_arch = .riscv32, .os_tag = .uefi, .abi = .none },
229 // .{ .cpu_arch = .riscv32, .os_tag = .uefi, .abi = .none },
230230
231231 .{ .cpu_arch = .riscv64, .os_tag = .freebsd, .abi = .none },
232232 .{ .cpu_arch = .riscv64, .os_tag = .freestanding, .abi = .none },
......@@ -241,20 +241,20 @@ const targets = [_]std.Target.Query{
241241 .{ .cpu_arch = .riscv64, .os_tag = .openbsd, .abi = .none },
242242 .{ .cpu_arch = .riscv64, .os_tag = .rtems, .abi = .none },
243243 .{ .cpu_arch = .riscv64, .os_tag = .serenity, .abi = .none },
244 .{ .cpu_arch = .riscv64, .os_tag = .uefi, .abi = .none },
244 // .{ .cpu_arch = .riscv64, .os_tag = .uefi, .abi = .none },
245245
246246 .{ .cpu_arch = .s390x, .os_tag = .freestanding, .abi = .none },
247247 .{ .cpu_arch = .s390x, .os_tag = .linux, .abi = .gnu },
248248 .{ .cpu_arch = .s390x, .os_tag = .linux, .abi = .none },
249 .{ .cpu_arch = .s390x, .os_tag = .zos, .abi = .none },
249 // .{ .cpu_arch = .s390x, .os_tag = .zos, .abi = .none },
250250
251 .{ .cpu_arch = .sparc, .os_tag = .freestanding, .abi = .none },
252 .{ .cpu_arch = .sparc, .os_tag = .illumos, .abi = .none },
253 .{ .cpu_arch = .sparc, .os_tag = .linux, .abi = .gnu },
254 .{ .cpu_arch = .sparc, .os_tag = .linux, .abi = .none },
255 .{ .cpu_arch = .sparc, .os_tag = .netbsd, .abi = .none },
256 .{ .cpu_arch = .sparc, .os_tag = .rtems, .abi = .none },
257 .{ .cpu_arch = .sparc, .os_tag = .solaris, .abi = .none },
251 // .{ .cpu_arch = .sparc, .os_tag = .freestanding, .abi = .none },
252 // .{ .cpu_arch = .sparc, .os_tag = .illumos, .abi = .none },
253 // .{ .cpu_arch = .sparc, .os_tag = .linux, .abi = .gnu },
254 // .{ .cpu_arch = .sparc, .os_tag = .linux, .abi = .none },
255 // .{ .cpu_arch = .sparc, .os_tag = .netbsd, .abi = .none },
256 // .{ .cpu_arch = .sparc, .os_tag = .rtems, .abi = .none },
257 // .{ .cpu_arch = .sparc, .os_tag = .solaris, .abi = .none },
258258
259259 .{ .cpu_arch = .sparc64, .os_tag = .freebsd, .abi = .none },
260260 .{ .cpu_arch = .sparc64, .os_tag = .freestanding, .abi = .none },
......@@ -301,8 +301,8 @@ const targets = [_]std.Target.Query{
301301 .{ .cpu_arch = .thumbeb, .os_tag = .rtems, .abi = .eabi },
302302 .{ .cpu_arch = .thumbeb, .os_tag = .rtems, .abi = .eabihf },
303303
304 .{ .cpu_arch = .ve, .os_tag = .freestanding, .abi = .none },
305 .{ .cpu_arch = .ve, .os_tag = .linux, .abi = .none },
304 // .{ .cpu_arch = .ve, .os_tag = .freestanding, .abi = .none },
305 // .{ .cpu_arch = .ve, .os_tag = .linux, .abi = .none },
306306
307307 .{ .cpu_arch = .wasm32, .os_tag = .emscripten, .abi = .none },
308308 .{ .cpu_arch = .wasm32, .os_tag = .freestanding, .abi = .none },
......@@ -329,6 +329,7 @@ const targets = [_]std.Target.Query{
329329 .{ .cpu_arch = .x86, .os_tag = .rtems, .abi = .none },
330330 .{ .cpu_arch = .x86, .os_tag = .solaris, .abi = .none },
331331 .{ .cpu_arch = .x86, .os_tag = .uefi, .abi = .none },
332 .{ .cpu_arch = .x86, .os_tag = .windows, .abi = .cygnus },
332333 .{ .cpu_arch = .x86, .os_tag = .windows, .abi = .gnu },
333334 .{ .cpu_arch = .x86, .os_tag = .windows, .abi = .itanium },
334335 .{ .cpu_arch = .x86, .os_tag = .windows, .abi = .msvc },
......@@ -368,14 +369,15 @@ const targets = [_]std.Target.Query{
368369 .{ .cpu_arch = .x86_64, .os_tag = .uefi, .abi = .none },
369370 .{ .cpu_arch = .x86_64, .os_tag = .visionos, .abi = .simulator },
370371 .{ .cpu_arch = .x86_64, .os_tag = .watchos, .abi = .simulator },
372 .{ .cpu_arch = .x86_64, .os_tag = .windows, .abi = .cygnus },
371373 .{ .cpu_arch = .x86_64, .os_tag = .windows, .abi = .gnu },
372374 .{ .cpu_arch = .x86_64, .os_tag = .windows, .abi = .itanium },
373375 .{ .cpu_arch = .x86_64, .os_tag = .windows, .abi = .msvc },
374376
375 .{ .cpu_arch = .xcore, .os_tag = .freestanding, .abi = .none },
377 // .{ .cpu_arch = .xcore, .os_tag = .freestanding, .abi = .none },
376378
377 .{ .cpu_arch = .xtensa, .os_tag = .freestanding, .abi = .none },
378 .{ .cpu_arch = .xtensa, .os_tag = .linux, .abi = .none },
379 // .{ .cpu_arch = .xtensa, .os_tag = .freestanding, .abi = .none },
380 // .{ .cpu_arch = .xtensa, .os_tag = .linux, .abi = .none },
379381};
380382
381383pub fn addCases(
......@@ -392,7 +394,7 @@ pub fn addCases(
392394 .xtensa => if (!build_options.llvm_has_xtensa) continue,
393395 else => {},
394396 };
395 var case = ctx.noEmitUsingLlvmBackend("llvm_targets", b.resolveTargetQuery(target_query));
397 var case = ctx.addObjLlvm("llvm_targets", b.resolveTargetQuery(target_query));
396398 case.addCompile("");
397399 }
398400}
test/src/Cases.zig+1-17
......@@ -204,34 +204,18 @@ pub fn exeFromCompiledC(ctx: *Cases, name: []const u8, target_query: std.Target.
204204 return &ctx.cases.items[ctx.cases.items.len - 1];
205205}
206206
207pub fn noEmitUsingLlvmBackend(ctx: *Cases, name: []const u8, target: std.Build.ResolvedTarget) *Case {
207pub fn addObjLlvm(ctx: *Cases, name: []const u8, target: std.Build.ResolvedTarget) *Case {
208208 ctx.cases.append(Case{
209209 .name = name,
210210 .target = target,
211211 .updates = std.ArrayList(Update).init(ctx.cases.allocator),
212212 .output_mode = .Obj,
213 .emit_bin = false,
214213 .deps = std.ArrayList(DepModule).init(ctx.arena),
215214 .backend = .llvm,
216215 }) catch @panic("out of memory");
217216 return &ctx.cases.items[ctx.cases.items.len - 1];
218217}
219218
220/// Adds a test case that uses the LLVM backend to emit an executable.
221/// Currently this implies linking libc, because only then we can generate a testable executable.
222pub fn exeUsingLlvmBackend(ctx: *Cases, name: []const u8, target: std.Build.ResolvedTarget) *Case {
223 ctx.cases.append(Case{
224 .name = name,
225 .target = target,
226 .updates = std.ArrayList(Update).init(ctx.cases.allocator),
227 .output_mode = .Exe,
228 .deps = std.ArrayList(DepModule).init(ctx.arena),
229 .backend = .llvm,
230 .link_libc = true,
231 }) catch @panic("out of memory");
232 return &ctx.cases.items[ctx.cases.items.len - 1];
233}
234
235219pub fn addObj(
236220 ctx: *Cases,
237221 name: []const u8,