authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2026-10-19 19:07:00-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-10-21 10:05:31-07:00
log6148ec9f438e38c94ce95d5802103c7c078acff0
tree098598c0323c1244904e088cae984a1e5c0458b6
parent3cc4f2f0dc660ff505ad35ee68b8f66484648530

test/llvm: combine `test-llvm-ir` and `test-llvm-targets`

The IR tests should be run on the same target matrix anyway.

25 files changed, 1204 insertions(+), 933 deletions(-)

build.zig+3-7
......@@ -816,13 +816,9 @@ pub fn build(b: *std.Build) !void {
816816 try tests.addRunnerTests(b, runner, test_incremental_step, "test/incremental", @import("test/incremental/matrix.zon"), runner_opts);
817817 test_step.dependOn(test_incremental_step);
818818
819 const test_llvm_ir_step = b.step("test-llvm-ir", "Run the LLVM IR tests");
820 try tests.addRunnerTests(b, runner, test_llvm_ir_step, "test/llvm-ir", @import("test/llvm-ir/matrix.zon"), runner_opts);
821 test_step.dependOn(test_llvm_ir_step);
822
823 const test_llvm_targets_step = b.step("test-llvm-targets", "Run the LLVM targets tests");
824 try tests.addRunnerTests(b, runner, test_llvm_targets_step, "test/llvm-targets", @import("test/llvm-targets/matrix.zon"), runner_opts);
825 test_step.dependOn(test_llvm_targets_step);
819 const test_llvm_step = b.step("test-llvm", "Run the LLVM IR tests");
820 try tests.addRunnerTests(b, runner, test_llvm_step, "test/llvm", @import("test/llvm/matrix.zon"), runner_opts);
821 test_step.dependOn(test_llvm_step);
826822}
827823
828824fn addWasiUpdateStep(b: *std.Build, version: [:0]const u8) !void {
lib/compiler/Maker/Step/Run.zig+7-1
......@@ -795,6 +795,7 @@ fn waitZigTest(
795795 multi_reader: *Io.File.MultiReader,
796796 opt_metadata: *?TestMetadata,
797797 results: *Step.TestResults,
798 eb_wip: *std.zig.ErrorBundle.Wip,
798799) !union(enum) {
799800 write_failed: anyerror,
800801 no_poll: struct {
......@@ -885,7 +886,7 @@ fn waitZigTest(
885886 .{ builtin.zig_version_string, body },
886887 );
887888 },
888 .error_bundle => step.result_error_bundle = try std.zig.Server.allocErrorBundle(gpa, body),
889 .error_bundle => try eb_wip.addBundleAsRoots(try std.zig.Server.allocErrorBundle(arena, body)),
889890 .test_metadata => {
890891 // `metadata` would only be populated if we'd already seen a `test_metadata`, but we
891892 // only request it once (and importantly, we don't re-request it if we kill and
......@@ -1573,6 +1574,9 @@ fn evalZigTest(
15731574 };
15741575 var test_metadata: ?TestMetadata = null;
15751576
1577 var eb_wip: std.zig.ErrorBundle.Wip = try .init(gpa);
1578 defer eb_wip.deinit();
1579
15761580 while (true) {
15771581 var child = try process.spawn(io, spawn_options);
15781582 var multi_reader_buffer: Io.File.MultiReader.Buffer(2) = undefined;
......@@ -1602,6 +1606,7 @@ fn evalZigTest(
16021606 &multi_reader,
16031607 &test_metadata,
16041608 &test_results,
1609 &eb_wip,
16051610 )) {
16061611 .write_failed => |err| {
16071612 // The runner unexpectedly closed a stdio pipe, which means a crash. Make sure we've captured
......@@ -1687,6 +1692,7 @@ fn evalZigTest(
16871692 }
16881693 }
16891694 }
1695 step.result_error_bundle = try eb_wip.toOwnedBundle("");
16901696 return;
16911697 },
16921698 .timeout => |timeout| {
src/main.zig+1-1
......@@ -3368,7 +3368,7 @@ fn buildOutputType(
33683368 const target = &main_mod.resolved_target.result;
33693369
33703370 if (target.cpu.arch == .arc or target.cpu.arch.isNvptx()) {
3371 if (emit_bin != .no and create_module.resolved_options.use_llvm) {
3371 if (emit_bin != .no and target.ofmt != .llvmbc and target.ofmt != .llvmir and create_module.resolved_options.use_llvm) {
33723372 fatal("cannot emit {s} binary with the LLVM backend; only '-femit-asm' is supported", .{
33733373 @tagName(target.cpu.arch),
33743374 });
test/Runner.zig+146-99
......@@ -17,7 +17,7 @@ pub const Target = struct {
1717 dynamic_linker: DynamicLinker = .default,
1818
1919 cache_mode: enum { whole, incremental },
20 backend: enum { selfhosted, llvm, llvmir, cbe },
20 backend: enum { selfhosted, llvm, cbe },
2121 linker: enum { lld, old, new },
2222 pic: enum { nopic, pic, pie },
2323
......@@ -942,6 +942,7 @@ fn testOne(runner: *Runner, test_index: u32) (error{ServerWriteFailed} || TestEr
942942 };
943943 defer {
944944 update.manifest_sr.deinit();
945 if (update.compiler) |*comp| comp.deinit();
945946 update.src_dir.close(runner.io);
946947 update.prog_node.end();
947948 }
......@@ -1161,11 +1162,12 @@ fn handleCommand(
11611162 const triple_cpu = component_it.rest();
11621163 var triple_len: usize = 0;
11631164 for (0..3) |_| {
1165 const component_start = triple_len;
11641166 triple_len = if (std.mem.findScalarPos(u8, triple_cpu, triple_len, '-')) |dash_pos|
11651167 dash_pos + 1
11661168 else
11671169 return update.fail("target {q} missing cpu", .{update.target_query});
1168 if (std.mem.eql(u8, triple_cpu[0..triple_len], "native-")) break;
1170 if (std.mem.eql(u8, triple_cpu[component_start..triple_len], "native-")) break;
11691171 }
11701172 const triple = triple_cpu[0 .. triple_len - 1];
11711173 const cpu = triple_cpu[triple_len..];
......@@ -1179,7 +1181,6 @@ fn handleCommand(
11791181 .cpu_features = cpu,
11801182 .object_format = switch (backend) {
11811183 .sema, .selfhosted, .llvm => null,
1182 .llvmir => "llvmir",
11831184 .cbe => "c",
11841185 },
11851186 .diagnostics = &query_parse_diags,
......@@ -1393,7 +1394,6 @@ fn handleCommand(
13931394 } else return update.fail("unexpected stderr:\n{s}", .{stderr_buffered});
13941395 }
13951396
1396 try comp.exit();
13971397 return update.fail("compiler failed to send terminating error_bundle", .{});
13981398 },
13991399 }
......@@ -1417,9 +1417,27 @@ fn spawnCompiler(
14171417 const gpa = runner.gpa;
14181418 const arena = runner.arena.allocator();
14191419 if (compiler.*) |*comp| {
1420 try comp.exit();
1420 comp.deinit();
14211421 compiler.* = null;
14221422 }
1423 errdefer compiler.* = null;
1424
1425 compiler.* = .{
1426 .runner = runner,
1427 .allow_compiler_stderr = true,
1428 .output_mode = output_mode,
1429 .state = .idle,
1430 .child = undefined,
1431 .fw = undefined,
1432 .mr_buffer = undefined,
1433 .mr = undefined,
1434 .client = undefined,
1435 .target = target,
1436 .emit_name = null,
1437 .prog_node = .none,
1438 .config = null,
1439 };
1440 const comp = &compiler.*.?;
14231441
14241442 var argv: std.ArrayList([]const u8) = .empty;
14251443 defer argv.deinit(gpa);
......@@ -1431,20 +1449,19 @@ fn spawnCompiler(
14311449 .Lib => "build-lib",
14321450 },
14331451 "-target",
1434 target.triple,
1452 comp.target.triple,
14351453 "--cache-dir",
14361454 ".zig-cache",
14371455 });
1438 switch (target.cache_mode) {
1456 switch (comp.target.cache_mode) {
14391457 .whole => {},
14401458 .incremental => try argv.append(gpa, "-fincremental"),
14411459 }
14421460 var path_buffer: [std.Io.Dir.max_path_bytes]u8 = undefined;
1443 if (target.backend) |b| switch (b) {
1461 if (comp.target.backend) |b| switch (b) {
14441462 .sema => try argv.append(gpa, "-fno-emit-bin"),
14451463 .selfhosted => try argv.append(gpa, "-fno-llvm"),
14461464 .llvm => try argv.append(gpa, "-fllvm"),
1447 .llvmir => try argv.append(gpa, "-ofmt=llvmir"),
14481465 .cbe => try argv.append(gpa, "-ofmt=c"),
14491466 } else try argv.appendSlice(gpa, &.{ "-I", path_buffer[0 .. (runner.args.lib_dir orelse
14501467 return runner.fail("\"--lib=path/to/lib\" arg required with cbe", .{}))
......@@ -1452,12 +1469,12 @@ fn spawnCompiler(
14521469 error.Canceled => |e| return e,
14531470 else => |e| return runner.fail("unable to get lib path: {t}", .{e}),
14541471 }] });
1455 switch (target.linker) {
1472 switch (comp.target.linker) {
14561473 .lld => try argv.appendSlice(gpa, &.{ "-flld", "-fno-new-linker" }),
14571474 .old => try argv.appendSlice(gpa, &.{ "-fno-lld", "-fno-new-linker" }),
14581475 .new => try argv.appendSlice(gpa, &.{ "-fno-lld", "-fnew-linker" }),
14591476 }
1460 switch (target.pic) {
1477 switch (comp.target.pic) {
14611478 .nopic => try argv.appendSlice(gpa, &.{ "-fno-PIC", "-fno-PIE" }),
14621479 .pic => try argv.appendSlice(gpa, &.{ "-fPIC", "-fno-PIE" }),
14631480 .pie => try argv.appendSlice(gpa, &.{ "-fPIC", "-fPIE" }),
......@@ -1466,6 +1483,7 @@ fn spawnCompiler(
14661483 var need: usize = 1;
14671484 var state: enum { positional, @"--name" } = .positional;
14681485 var root_name: ?[]const u8 = null;
1486 var emit: ?std.zig.EmitArtifact = .bin;
14691487 while (true) {
14701488 const done = if (args_r.fill(need)) false else |err| switch (err) {
14711489 error.ReadFailed => |e| return e,
......@@ -1479,10 +1497,42 @@ fn spawnCompiler(
14791497 switch (state) {
14801498 .positional => if (std.mem.eql(u8, arg, "--name")) {
14811499 state = .@"--name";
1500 } else if (std.mem.cutPrefix(u8, arg, "-ofmt=")) |ofmt| {
1501 comp.target.resolved.ofmt =
1502 std.meta.stringToEnum(std.Target.ObjectFormat, ofmt) orelse
1503 return runner.fail("invalid object format {q}", .{ofmt});
14821504 } else if (std.mem.cutPrefix(u8, arg, "-M")) |module| {
14831505 var module_name_it = std.mem.splitScalar(u8, module, '=');
14841506 const module_name = module_name_it.next().?;
14851507 root_name = root_name orelse module_name;
1508 } else if (std.mem.eql(u8, arg, "-femit-asm")) {
1509 emit = .@"asm";
1510 } else if (std.mem.eql(u8, arg, "-femit-bin")) {
1511 emit = .bin;
1512 } else if (std.mem.eql(u8, arg, "-femit-docs")) {
1513 emit = .docs;
1514 } else if (std.mem.eql(u8, arg, "-femit-h")) {
1515 emit = .h;
1516 } else if (std.mem.eql(u8, arg, "-femit-implib")) {
1517 emit = .implib;
1518 } else if (std.mem.eql(u8, arg, "-femit-llvm-bc")) {
1519 emit = .llvm_bc;
1520 } else if (std.mem.eql(u8, arg, "-femit-llvm-ir")) {
1521 emit = .llvm_ir;
1522 } else if (std.mem.eql(u8, arg, "-fno-emit-asm")) {
1523 if (emit == .@"asm") emit = null;
1524 } else if (std.mem.eql(u8, arg, "-fno-emit-bin")) {
1525 if (emit == .bin) emit = null;
1526 } else if (std.mem.eql(u8, arg, "-fno-emit-docs")) {
1527 if (emit == .docs) emit = null;
1528 } else if (std.mem.eql(u8, arg, "-fno-emit-h")) {
1529 if (emit == .h) emit = null;
1530 } else if (std.mem.eql(u8, arg, "-fno-emit-implib")) {
1531 if (emit == .implib) emit = null;
1532 } else if (std.mem.eql(u8, arg, "-fno-emit-llvm-bc")) {
1533 if (emit == .llvm_bc) emit = null;
1534 } else if (std.mem.eql(u8, arg, "-fno-emit-llvm-ir")) {
1535 if (emit == .llvm_ir) emit = null;
14861536 },
14871537 .@"--name" => {
14881538 root_name = arg;
......@@ -1500,27 +1550,27 @@ fn spawnCompiler(
15001550 }
15011551 try argv.append(gpa, "--listen=-");
15021552
1503 const out_name = try std.zig.EmitArtifact.bin.cacheName(arena, .{
1553 comp.emit_name = if (emit) |e| try e.cacheName(arena, .{
15041554 .root_name = root_name orelse "root",
1505 .cpu_arch = target.resolved.cpu.arch,
1506 .os_tag = target.resolved.os.tag,
1507 .ofmt = target.resolved.ofmt,
1508 .abi = target.resolved.abi,
1555 .cpu_arch = comp.target.resolved.cpu.arch,
1556 .os_tag = comp.target.resolved.os.tag,
1557 .ofmt = comp.target.resolved.ofmt,
1558 .abi = comp.target.resolved.abi,
15091559 .output_mode = output_mode,
1510 });
1560 }) else null;
15111561
15121562 var name_buffer: [std.Progress.Node.max_name_len]u8 = undefined;
1513 const comp_prog_node = runner.prog_node.start(std.mem.print(&name_buffer, "compile {s}", .{
1514 out_name,
1563 comp.prog_node = runner.prog_node.start(std.mem.print(&name_buffer, "compile {s}", .{
1564 comp.emit_name orelse root_name orelse "root",
15151565 }) catch &name_buffer, 0);
1516 errdefer comp_prog_node.end();
1566 errdefer comp.prog_node.end();
15171567
1518 const child = std.process.spawn(runner.io, .{
1568 comp.child = std.process.spawn(runner.io, .{
15191569 .exe = .{ .file = runner.args.zig_exe orelse
15201570 return runner.fail("missing \"--zig=path/to/zig\" arg", .{}) },
15211571 .argv = argv.items,
15221572 .cwd = .{ .dir = src_dir },
1523 .progress_node = comp_prog_node,
1573 .progress_node = comp.prog_node,
15241574 .stdin = .pipe,
15251575 .stdout = .pipe,
15261576 .stderr = .pipe,
......@@ -1529,31 +1579,14 @@ fn spawnCompiler(
15291579 error.OperationUnsupported => return error.SkipTest,
15301580 else => |e| return runner.fail("unable to spawn compiler: {t}", .{e}),
15311581 };
1532 compiler.* = .{
1533 .runner = runner,
1534 .prog_node = comp_prog_node,
1535 .allow_compiler_stderr = true,
1536 .output_mode = output_mode,
1537 .state = .idle,
1538 .child = child,
1539 .fw = undefined,
1540 .mr_buffer = undefined,
1541 .mr = undefined,
1542 .client = undefined,
1543 .target = target,
1544 .out_name = out_name,
1545 .config = null,
1546 };
1547 const comp = &compiler.*.?;
1548 comp.fw = child.stdin.?.writerStreaming(runner.io, &.{});
1582 comp.fw = comp.child.stdin.?.writerStreaming(runner.io, &.{});
15491583 comp.mr.init(gpa, runner.io, comp.mr_buffer.toStreams(), &.{
1550 child.stdout.?, child.stderr.?,
1584 comp.child.stdout.?, comp.child.stderr.?,
15511585 });
15521586 comp.client = .{ .in = comp.mr.reader(0), .out = &comp.fw.interface };
15531587}
15541588const Compiler = struct {
15551589 runner: *Runner,
1556 prog_node: std.Progress.Node,
15571590 allow_compiler_stderr: bool,
15581591 output_mode: std.lang.OutputMode,
15591592 state: enum { idle, update },
......@@ -1563,7 +1596,8 @@ const Compiler = struct {
15631596 mr: std.Io.File.MultiReader,
15641597 client: std.zig.Client,
15651598 target: Compiler.Target,
1566 out_name: []const u8,
1599 emit_name: ?[]const u8,
1600 prog_node: std.Progress.Node,
15671601 config: ?std.zig.Server.Message.Config,
15681602
15691603 const Target = struct {
......@@ -1586,8 +1620,6 @@ const Compiler = struct {
15861620 /// Use the LLVM backend.
15871621 /// Corresponds to `-fllvm -flld`.
15881622 llvm,
1589 /// Use the LLVM backend without libLLVM.
1590 llvmir,
15911623 /// Use the C backend. The output is compiled with `zig cc`.
15921624 /// Corresponds to `-ofmt=c`.
15931625 cbe,
......@@ -1598,6 +1630,12 @@ const Compiler = struct {
15981630 const Pic = enum { nopic, pic, pie };
15991631 };
16001632
1633 fn deinit(comp: *Compiler) void {
1634 comp.child.kill(comp.runner.io);
1635 comp.prog_node.end();
1636 comp.prog_node = .none;
1637 }
1638
16011639 fn receiveMessage(comp: *Compiler) FailError!?struct {
16021640 tag: std.zig.Server.Message.Tag,
16031641 body: []const u8,
......@@ -1639,6 +1677,11 @@ const Compiler = struct {
16391677 const arena = runner.arena.allocator();
16401678 const io = runner.io;
16411679 const target = &comp.target.resolved;
1680 const emit_name = switch (check) {
1681 else => comp.emit_name orelse
1682 return update.fail("unable to perform {t} check without emitted file", .{check}),
1683 .errors => return, // expect no emitted file
1684 };
16421685 const config = &comp.config.?;
16431686 var path_buffer: [std.Io.Dir.max_path_bytes]u8 = undefined;
16441687
......@@ -1655,14 +1698,49 @@ const Compiler = struct {
16551698 }),
16561699 };
16571700
1658 var argv: std.ArrayList([]const u8) = .initBuffer(try arena.alloc([]const u8, 5 + 4));
1701 const emit_path = emit_path: {
1702 const emit_dir_path = ".zig-cache" ++ std.Io.Dir.path.sep_str ++
1703 "o" ++ std.Io.Dir.path.sep_str ++ std.Build.Cache.binToHex(digest.*);
1704 const emit_path =
1705 try std.Io.Dir.path.join(arena, &.{ emit_dir_path, emit_name });
1706 break :emit_path switch (comp.target.backend.?) {
1707 .sema => return,
1708 .selfhosted, .llvm => emit_path,
1709 .cbe => try comp.compileC(update.src_dir, emit_path),
1710 };
1711 };
1712
1713 const emit_file = update.src_dir.openFile(io, emit_path, .{}) catch |err| switch (err) {
1714 error.Canceled => |e| return e,
1715 else => |e| return update.fail("unable to open {q}: {t}", .{ emit_path, e }),
1716 };
1717 defer emit_file.close(io);
1718
1719 var argv: std.ArrayList([]const u8) = try .initCapacity(arena, 5 + 4);
16591720 var environ_map: std.process.Environ.Map = .init(gpa);
16601721 defer environ_map.deinit();
16611722 try environ_map.putAll(&runner.environ_map);
16621723 var script_buffer: [512]u8 = undefined;
16631724 const script_path, const script_file, var script_fw = script: switch (check) {
1664 .errors => return,
1665 .stdout, .exit, .llvm => .{ undefined, null, undefined },
1725 .errors => unreachable,
1726 .stdout, .exit => .{ undefined, null, undefined },
1727 .llvm => {
1728 var emit_fr = emit_file.reader(io, &.{});
1729 const actual = emit_fr.interface.readAllocAll(arena, @intCast(
1730 emit_fr.getSize() catch |err| switch (err) {
1731 error.Canceled => |e| return e,
1732 else => |e| return runner.fail("unable to get size of {q}: {t}", .{ emit_path, e }),
1733 },
1734 )) catch |err| switch (switch (err) {
1735 error.OutOfMemory => |e| return e,
1736 error.EndOfStream => |e| e,
1737 error.ReadFailed => emit_fr.err.?,
1738 }) {
1739 error.Canceled => |e| return e,
1740 else => |e| return runner.fail("unable to read {q}: {t}", .{ emit_path, e }),
1741 };
1742 return update.checkMatches("LLVM IR", expected, actual);
1743 },
16661744 .gdb => {
16671745 const script_path = tmp_dir_path ++ std.Io.Dir.path.sep_str ++ "gdb";
16681746 argv.appendSliceAssumeCapacity(&.{ "gdb", "--batch", "--command", script_path, "--args" });
......@@ -1721,15 +1799,6 @@ const Compiler = struct {
17211799 };
17221800 defer if (script_file) |file| file.close(io);
17231801
1724 const out_dir_path = ".zig-cache" ++ std.Io.Dir.path.sep_str ++
1725 "o" ++ std.Io.Dir.path.sep_str ++ std.Build.Cache.binToHex(digest.*);
1726 const out_path = try std.Io.Dir.path.join(arena, &.{ out_dir_path, comp.out_name });
1727 const bin_path = switch (comp.target.backend.?) {
1728 .sema => return,
1729 .selfhosted, .llvm, .llvmir => out_path,
1730 .cbe => try comp.compileC(update.src_dir, out_path),
1731 };
1732
17331802 const need_cross_libc =
17341803 target.os.tag == .linux and config.flags.link_libc and config.flags.link_mode == .dynamic;
17351804 const use_executor = use_executor: switch (std.zig.system.getExternalExecutor(io, target, .{
......@@ -1796,7 +1865,7 @@ const Compiler = struct {
17961865 break :use_executor true;
17971866 } else continue :use_executor .bad_os_or_cpu,
17981867 };
1799 argv.appendAssumeCapacity(bin_path);
1868 argv.appendAssumeCapacity(emit_path);
18001869
18011870 if (!runner.args.quiet) std.log.info("{f}", .{std.zig.SubprocessCommand{
18021871 .argv = argv.items,
......@@ -1815,41 +1884,19 @@ const Compiler = struct {
18151884
18161885 var name_buffer: [std.Progress.Node.max_name_len]u8 = undefined;
18171886 const run_prog_node = runner.prog_node.start(std.mem.print(&name_buffer, "run {s}", .{
1818 comp.out_name,
1887 emit_name,
18191888 }) catch &name_buffer, 0);
18201889 defer run_prog_node.end();
18211890
1822 const bin_file = update.src_dir.openFile(io, bin_path, .{}) catch |err| switch (err) {
1823 error.Canceled => |e| return e,
1824 else => |e| return update.fail("unable to open {q}: {t}", .{ bin_path, e }),
1825 };
1826 defer bin_file.close(io);
18271891 const result = std.process.run(gpa, io, .{
18281892 .exe = exe: switch (check) {
1829 .errors => unreachable,
1830 .stdout, .exit => if (use_executor) .search else .{ .file = bin_file },
1831 .llvm => {
1832 var bin_fr = bin_file.reader(io, &.{});
1833 const actual = bin_fr.interface.readAllocAll(arena, @intCast(
1834 bin_fr.getSize() catch |err| switch (err) {
1835 error.Canceled => |e| return e,
1836 else => |e| return runner.fail("unable to get size of {q}: {t}", .{ bin_path, e }),
1837 },
1838 )) catch |err| switch (switch (err) {
1839 error.OutOfMemory => |e| return e,
1840 error.EndOfStream => |e| e,
1841 error.ReadFailed => bin_fr.err.?,
1842 }) {
1843 error.Canceled => |e| return e,
1844 else => |e| return runner.fail("unable to read {q}: {t}", .{ bin_path, e }),
1845 };
1846 return update.checkMatches("LLVM IR", expected, actual);
1847 },
1893 .errors, .llvm => unreachable,
1894 .stdout, .exit => if (use_executor) .search else .{ .file = emit_file },
18481895 .gdb, .lldb => {
18491896 if (use_executor) {
18501897 if (!runner.args.quiet) std.log.warn(
18511898 "skipping debugging of {q} via executor for foreign target {q}",
1852 .{ bin_path, comp.target.triple },
1899 .{ emit_path, comp.target.triple },
18531900 );
18541901 return;
18551902 }
......@@ -1895,7 +1942,7 @@ const Compiler = struct {
18951942 } orelse {
18961943 if (!runner.args.quiet) std.log.warn(
18971944 "skipping debugging of {q} because of missing \"--{t}=path/to/{[1]t}\" arg",
1898 .{ bin_path, check },
1945 .{ emit_path, check },
18991946 );
19001947 return;
19011948 } };
......@@ -1909,11 +1956,11 @@ const Compiler = struct {
19091956 // Chances are the foreign executor isn't available. Skip this evaluation.
19101957 if (!runner.args.quiet) std.log.warn(
19111958 "skipping execution of {q} via executor for foreign target {q}: {t}",
1912 .{ bin_path, comp.target.triple, err },
1959 .{ emit_path, comp.target.triple, err },
19131960 );
19141961 return;
19151962 } else return update.fail("unable to run the generated executable {q}: {t}", .{
1916 bin_path, err,
1963 emit_path, err,
19171964 });
19181965 defer {
19191966 gpa.free(result.stdout);
......@@ -1925,7 +1972,7 @@ const Compiler = struct {
19251972 .stdout => {
19261973 if (code != 0) return update.fail(
19271974 "generated executable {q} failed with code {d}",
1928 .{ bin_path, code },
1975 .{ emit_path, code },
19291976 );
19301977 std.testing.expectEqualStrings(
19311978 expected,
......@@ -1953,27 +2000,27 @@ const Compiler = struct {
19532000 .gdb, .lldb => {
19542001 if (code != debug_success) return update.fail(
19552002 "debugging {q} failed with code {d}",
1956 .{ bin_path, code },
2003 .{ emit_path, code },
19572004 );
19582005 try update.checkMatches("stdout", expected, result.stdout);
19592006 },
19602007 },
19612008 .signal => |sig| return update.fail(
19622009 "generated executable {q} terminated with signal {t}",
1963 .{ bin_path, sig },
2010 .{ emit_path, sig },
19642011 ),
19652012 .stopped => |sig| return update.fail(
19662013 "generated executable {q} stopped with signal {t}",
1967 .{ bin_path, sig },
2014 .{ emit_path, sig },
19682015 ),
19692016 .unknown => return update.fail(
19702017 "generated executable {q} terminated unexpectedly",
1971 .{bin_path},
2018 .{emit_path},
19722019 ),
19732020 }
19742021 if (!use_executor and result.stderr.len > 0) {
19752022 std.log.err("#update {q} generated executable {q} had unexpected stderr:\n{s}", .{
1976 update.name, bin_path, result.stderr,
2023 update.name, emit_path, result.stderr,
19772024 });
19782025 }
19792026 }
......@@ -1999,6 +2046,7 @@ const Compiler = struct {
19992046 error.ReadFailed => unreachable, // .fixed
20002047 };
20012048 const comp = &compiler.?;
2049 defer comp.deinit();
20022050 comp.client.serveBodylessMessage(.update) catch |err| switch (err) {
20032051 error.WriteFailed => switch (comp.fw.err.?) {
20042052 error.Canceled => |e| return e,
......@@ -2006,7 +2054,7 @@ const Compiler = struct {
20062054 },
20072055 };
20082056 comp.state = .update;
2009 var out_path: ?[]const u8 = null;
2057 var emit_path: ?[]const u8 = null;
20102058 while (try comp.receiveMessage()) |message| switch (message.tag) {
20112059 else => {}, // Ignore other messages,
20122060 .config => {
......@@ -2019,9 +2067,9 @@ const Compiler = struct {
20192067 _ = body_r.takeStruct(std.zig.Server.Message.EmitDigest, .little) catch unreachable;
20202068 const digest = body_r.takeArray(std.Build.Cache.bin_digest_len) catch unreachable;
20212069
2022 const out_dir = ".zig-cache" ++ std.Io.Dir.path.sep_str ++
2070 const emit_dir = ".zig-cache" ++ std.Io.Dir.path.sep_str ++
20232071 "o" ++ std.Io.Dir.path.sep_str ++ std.Build.Cache.binToHex(digest.*);
2024 out_path = try std.Io.Dir.path.join(arena, &.{ out_dir, comp.out_name });
2072 emit_path = try std.Io.Dir.path.join(arena, &.{ emit_dir, comp.emit_name.? });
20252073 },
20262074 .error_bundle => {
20272075 const eb = std.zig.Server.allocErrorBundle(
......@@ -2040,7 +2088,7 @@ const Compiler = struct {
20402088 },
20412089 };
20422090 try comp.exit();
2043 return out_path.?;
2091 return emit_path.?;
20442092 }
20452093
20462094 fn exit(comp: *Compiler) FailError!void {
......@@ -2058,7 +2106,6 @@ const Compiler = struct {
20582106 if (comp.client.in.bufferedLen() > 0) return runner.fail("unable to receive messages", .{});
20592107 const term = comp.child.wait(runner.io) catch |err|
20602108 return runner.fail("child process failed: {t}", .{err});
2061 comp.prog_node.end();
20622109 switch (term) {
20632110 .exited => |code| if (code != 0)
20642111 return runner.fail("compiler failed with code {d}", .{code}),
......@@ -2309,8 +2356,8 @@ pub fn main(init: std.process.Init) (std.mem.Allocator.Error || std.Io.Cancelabl
23092356 };
23102357 }
23112358
2312 var inherit_dirs: std.ArrayList(std.Io.Dir) = .initBuffer(try arena.alloc(std.Io.Dir, 3));
2313 var inherit_files: std.ArrayList(std.Io.File) = .initBuffer(try arena.alloc(std.Io.File, 4));
2359 var inherit_dirs: std.ArrayList(std.Io.Dir) = try .initCapacity(arena, 3);
2360 var inherit_files: std.ArrayList(std.Io.File) = try .initCapacity(arena, 4);
23142361 inherit_files.appendSliceAssumeCapacity(&.{ args.test_file, args.zig_exe });
23152362 inherit_dirs.appendSliceAssumeCapacity(&.{ args.lib_dir, args.src_dir });
23162363 if (args.libc_runtimes_dir) |libc_runtimes_dir| inherit_dirs.appendAssumeCapacity(libc_runtimes_dir);
test/llvm-ir/allowzero deleted-72
......@@ -1,72 +0,0 @@
1#obj {
2--name test
3-Mroot=test.zig
4#}
5
6#write test.zig {
7export fn entry(ptr: *allowzero i16) i16 {
8 return ptr.*;
9}
10#}
11#update "load"
12#check llvm {
13define #...@test.entry(ptr #...%0) #...#0 #...{
14#...load i16, ptr %0#...
15}
16
17#...
18attributes #0 = {#... null_pointer_is_valid #...}
19#}
20
21#write test.zig {
22export fn entry(ptr: *allowzero i16) void {
23 ptr.* = 42;
24}
25#}
26#update "store"
27#check llvm {
28define #...@test.entry(ptr #...%0) #...#0 #...{
29#...store i16 42, ptr %0#...
30}
31
32#...
33attributes #0 = {#... null_pointer_is_valid #...}
34#}
35
36#write test.zig {
37export fn entry(ptr: *allowzero i16) i16 {
38 return entry2(ptr[0..1]);
39}
40fn entry2(slice: []allowzero i16) i16 {
41 @setRuntimeSafety(false);
42 return slice[0];
43}
44#}
45#update "slice load"
46#check llvm {
47define #...@test.entry2(#..., ptr #...%1, #...) #...#2 #...{
48#...load i16, ptr %#...
49}
50
51#...
52attributes #2 = {#... null_pointer_is_valid #...}
53#}
54
55#write test.zig {
56export fn entry(ptr: *allowzero i16) void {
57 entry2(ptr[0..1]);
58}
59fn entry2(slice: []allowzero i16) void {
60 @setRuntimeSafety(false);
61 slice[0] = 42;
62}
63#}
64#update "slice store"
65#check llvm {
66define #...@test.entry2(#..., ptr #...%1, #...) #...#2 #...{
67#...store i16 42, ptr %#...
68}
69
70#...
71attributes #2 = {#... null_pointer_is_valid #...}
72#}
test/llvm-ir/array_to_vector deleted-38
......@@ -1,38 +0,0 @@
1#obj {
2--name test
3-Mroot=test.zig
4#}
5
6#write test.zig {
7export fn entry(arr: *const [16]u8) @Vector(16, u8) {
8 return arr.*;
9}
10#}
11#update "one vector load"
12#check llvm {
13define #...<16 x i8> @test.entry(#...) #...{
14#...
15 %1 = alloca [16 x i8], align 1#...
16 %3 = load <16 x i8>, ptr %1, align 1#...
17 ret <16 x i8> %3#...
18#}
19
20#write test.zig {
21export fn entry(a: *@Vector(8, u8), b: *@Vector(8, u8), src: [*]const u8) void {
22 const q: @Vector(16, u8) = src[0..16].*;
23 a.* = @shuffle(u8, q, undefined, @Vector(8, i32){ 0, 1, 2, 3, 4, 5, 6, 7 });
24 b.* = @shuffle(u8, q, undefined, @Vector(8, i32){ 7, 8, 9, 10, 11, 12, 13, 14 });
25}
26#}
27#update "feeding overlapping shuffles"
28#check llvm {
29define #...void @test.entry(ptr #...%0, ptr #...%1, #...) #...{
30#...
31 %11 = load <16 x i8>, ptr %#...
32 %12 = shufflevector <16 x i8> %11, #...
33 store <8 x i8> %12, ptr %0, align 8#...
34 %13 = shufflevector <16 x i8> %11, #...
35 store <8 x i8> %13, ptr %1, align 8#...
36 ret void#...
37}
38#}
test/llvm-ir/dead_store deleted-43
......@@ -1,43 +0,0 @@
1#obj {
2--name test
3-Mroot=test.zig
4#}
5
6#write test.zig {
7export fn entry(ptr: *volatile i16) void {
8 ptr.* = 123;
9 ptr.* = 321;
10}
11#}
12#update "volatile"
13#check llvm {
14define #...@test.entry(ptr #...%0) #...{
15#...store volatile i16 123, ptr %0#...
16#...store volatile i16 321, ptr %0#...
17}
18
19#}
20
21#write test.zig {
22export fn entry(ptr: *volatile i16) void {
23 entry2(ptr[0..1]);
24}
25fn entry2(slice: []volatile i16) void {
26 @setRuntimeSafety(false);
27 slice[0] = 123;
28 slice[0] = 321;
29}
30#}
31#update "volatile slice"
32#check llvm {
33define #...@test.entry(#...) #...{
34#...
35}
36
37#...
38define #...@test.entry2(#...) #...{
39#...store volatile i16 123, ptr %#...
40#...store volatile i16 321, ptr %#...
41}
42
43#}
test/llvm-ir/load_store_bool deleted-28
......@@ -1,28 +0,0 @@
1#obj {
2--name test
3-Mroot=test.zig
4#}
5
6#write test.zig {
7export fn foo(a: *bool, b: *align(2) bool) void {
8 const tmp = a.*;
9 a.* = b.*;
10 b.* = tmp;
11}
12#}
13#update
14#check llvm {
15define #...void @test.foo(ptr #...%0, ptr #...%1) #...{
16#...
17 %5 = load i8, ptr %0, align 1#...
18 %6 = trunc nuw i8 %5 to i1#...
19 %8 = load i8, ptr %1, align 2#...
20 %9 = trunc nuw i8 %8 to i1#...
21 %10 = zext i1 %9 to i8#...
22 store i8 %10, ptr %0, align 1#...
23 %11 = zext i1 %6 to i8#...
24 store i8 %11, ptr %1, align 2#...
25 ret void#...
26}
27
28#}
test/llvm-ir/matrix.zon deleted-8
......@@ -1,8 +0,0 @@
1.{
2 .{
3 .cache_mode = .whole,
4 .backend = .llvmir,
5 .linker = .old,
6 .pic = .pic,
7 },
8}
test/llvm-ir/nonnull deleted-30
......@@ -1,30 +0,0 @@
1#obj {
2--name test
3-Mroot=test.zig
4#}
5
6#write test.zig {
7export fn entry(ptr: *i16) i16 {
8 return ptr.*;
9}
10#}
11#update "store"
12#check llvm {
13define #...@test.entry(ptr #...nonnull #...%0) #...{
14#...load i16, ptr %0#...
15}
16
17#}
18
19#write test.zig {
20export fn entry(ptr: *i16) void {
21 ptr.* = 42;
22}
23#}
24#update "load"
25#check llvm {
26define #...@test.entry(ptr #...nonnull #...%0) #...{
27#...store i16 42, ptr %0#...
28}
29
30#}
test/llvm-ir/unused_load deleted-79
......@@ -1,79 +0,0 @@
1#obj {
2--name test
3-Mroot=test.zig
4#}
5
6#write test.zig {
7export fn entry(ptr: *i16) void {
8 _ = @atomicLoad(i16, ptr, .acquire);
9}
10#}
11#update "atomic acquire"
12#check llvm {
13define #...@test.entry(ptr #...%0) #...{
14#...load atomic i16, ptr %0 acquire#...
15}
16
17#}
18
19#write test.zig {
20export fn entry(ptr: *volatile i16) void {
21 _ = @atomicLoad(i16, ptr, .unordered);
22}
23#}
24#update "atomic volatile unordered"
25#check llvm {
26define #...@test.entry(ptr #...%0) #...{
27#...load atomic volatile i16, ptr %0 unordered#...
28}
29
30#}
31
32#write test.zig {
33export fn entry(ptr: *volatile i16) void {
34 _ = ptr.*;
35}
36#}
37#update "volatile"
38#check llvm {
39define #...@test.entry(ptr #...%0) #...{
40#...load volatile i16, ptr %0#...
41}
42
43#}
44
45#write test.zig {
46export fn entry(ptr: *volatile i16) void {
47 entry2(ptr[0..1]);
48}
49fn entry2(slice: []volatile i16) void {
50 @setRuntimeSafety(false);
51 _ = slice[0];
52}
53#}
54#update "volatile slice"
55#check llvm {
56define #...@test.entry(#...) #...{
57#...
58}
59
60#...
61define #...@test.entry2(#...) #...{
62#...load volatile i16, ptr %#...
63}
64
65#}
66
67#write test.zig {
68const S = packed struct(u16) { a: u2, b: u8, c: u6 };
69export fn entry(ptr: *volatile S) void {
70 _ = ptr.b;
71}
72#}
73#update "volatile packed"
74#check llvm {
75define #...@test.entry(ptr #...%0) #...{
76#...load volatile i16, ptr %#...
77}
78
79#}
test/llvm-targets/empty_analyze deleted-50
......@@ -1,50 +0,0 @@
1#skip amdgcn-amdpal-none-baseline-whole-llvm-lld-pic
2#skip amdgcn-mesa3d-none-baseline-whole-llvm-lld-pic
3
4#skip arm-uefi-eabi-baseline-whole-llvm-lld-pic
5#skip arm-uefi-eabihf-baseline-whole-llvm-lld-pic
6
7#skip csky-freestanding-eabi-baseline-whole-llvm-lld-pic
8#skip csky-freestanding-eabihf-baseline-whole-llvm-lld-pic
9#skip csky-linux-eabi-baseline-whole-llvm-lld-pic
10#skip csky-linux-eabihf-baseline-whole-llvm-lld-pic
11#skip csky-linux-gnueabi-baseline-whole-llvm-lld-pic
12#skip csky-linux-gnueabihf-baseline-whole-llvm-lld-pic
13
14#skip loongarch32-linux-gnuf32-baseline-whole-llvm-lld-pic
15#skip loongarch32-linux-musl-baseline-whole-llvm-lld-pic
16#skip loongarch32-linux-muslf32-baseline-whole-llvm-lld-pic
17#skip loongarch32-linux-muslsf-baseline-whole-llvm-lld-pic
18#skip loongarch32-uefi-none-baseline-whole-llvm-lld-pic
19
20#skip loongarch64-linux-gnuf32-baseline-whole-llvm-lld-pic
21#skip loongarch64-linux-muslf32-baseline-whole-llvm-lld-pic
22#skip loongarch64-uefi-none-baseline-whole-llvm-lld-pic
23
24#skip mipsel-psx-eabi-baseline-whole-llvm-lld-pic
25
26#skip riscv32-uefi-none-baseline-whole-llvm-lld-pic
27
28#skip riscv32be-freestanding-none-baseline-whole-llvm-lld-pic
29
30#skip riscv64-uefi-none-baseline-whole-llvm-lld-pic
31
32#skip riscv64be-freestanding-none-baseline-whole-llvm-lld-pic
33
34#skip spirv32-opencl-none-baseline-whole-llvm-lld-pic
35#skip spirv32-opengl-none-baseline-whole-llvm-lld-pic
36#skip spirv32-vulkan-none-baseline-whole-llvm-lld-pic
37
38#skip spirv64-amdhsa-none-baseline-whole-llvm-lld-pic
39#skip spirv64-opencl-none-baseline-whole-llvm-lld-pic
40#skip spirv64-vulkan-none-baseline-whole-llvm-lld-pic
41
42#obj {
43--name llvm_targets
44-Mroot=analyze.zig
45-fno-emit-asm -fno-emit-bin
46#}
47
48#write analyze.zig
49#update
50#check errors
test/llvm-targets/empty_assembly deleted-55
......@@ -1,55 +0,0 @@
1#skip amdgcn-amdpal-none-baseline-whole-llvm-lld-pic
2#skip amdgcn-mesa3d-none-baseline-whole-llvm-lld-pic
3
4#skip arm-uefi-eabi-baseline-whole-llvm-lld-pic
5#skip arm-uefi-eabihf-baseline-whole-llvm-lld-pic
6
7#skip csky-freestanding-eabi-baseline-whole-llvm-lld-pic
8#skip csky-freestanding-eabihf-baseline-whole-llvm-lld-pic
9#skip csky-linux-eabi-baseline-whole-llvm-lld-pic
10#skip csky-linux-eabihf-baseline-whole-llvm-lld-pic
11#skip csky-linux-gnueabi-baseline-whole-llvm-lld-pic
12#skip csky-linux-gnueabihf-baseline-whole-llvm-lld-pic
13
14#skip loongarch32-linux-gnuf32-baseline-whole-llvm-lld-pic
15#skip loongarch32-linux-musl-baseline-whole-llvm-lld-pic
16#skip loongarch32-linux-muslf32-baseline-whole-llvm-lld-pic
17#skip loongarch32-linux-muslsf-baseline-whole-llvm-lld-pic
18#skip loongarch32-uefi-none-baseline-whole-llvm-lld-pic
19
20#skip loongarch64-linux-gnuf32-baseline-whole-llvm-lld-pic
21#skip loongarch64-linux-muslf32-baseline-whole-llvm-lld-pic
22#skip loongarch64-uefi-none-baseline-whole-llvm-lld-pic
23
24#skip mipsel-psx-eabi-baseline-whole-llvm-lld-pic
25
26#skip riscv32-uefi-none-baseline-whole-llvm-lld-pic
27
28#skip riscv32be-freestanding-none-baseline-whole-llvm-lld-pic
29
30#skip riscv64-uefi-none-baseline-whole-llvm-lld-pic
31
32#skip riscv64be-freestanding-none-baseline-whole-llvm-lld-pic
33
34#skip spirv32-opencl-none-baseline-whole-llvm-lld-pic
35#skip spirv32-opengl-none-baseline-whole-llvm-lld-pic
36#skip spirv32-vulkan-none-baseline-whole-llvm-lld-pic
37
38#skip spirv64-amdhsa-none-baseline-whole-llvm-lld-pic
39#skip spirv64-opencl-none-baseline-whole-llvm-lld-pic
40#skip spirv64-vulkan-none-baseline-whole-llvm-lld-pic
41
42#skip xtensa-freestanding-call0-baseline-whole-llvm-lld-pic
43#skip xtensa-freestanding-none-baseline-whole-llvm-lld-pic
44#skip xtensa-linux-call0-baseline-whole-llvm-lld-pic
45#skip xtensa-linux-none-baseline-whole-llvm-lld-pic
46
47#obj {
48--name llvm_targets
49-Mroot=assembly.zig
50-femit-asm -fno-emit-bin
51#}
52
53#write assembly.zig
54#update
55#check errors
test/llvm-targets/empty_object deleted-67
......@@ -1,67 +0,0 @@
1#skip amdgcn-amdpal-none-baseline-whole-llvm-lld-pic
2#skip amdgcn-mesa3d-none-baseline-whole-llvm-lld-pic
3
4#skip arc-freestanding-none-baseline-whole-llvm-lld-pic
5#skip arc-linux-gnu-baseline-whole-llvm-lld-pic
6#skip arc-linux-none-baseline-whole-llvm-lld-pic
7
8#skip arm-uefi-eabi-baseline-whole-llvm-lld-pic
9#skip arm-uefi-eabihf-baseline-whole-llvm-lld-pic
10
11#skip csky-freestanding-eabi-baseline-whole-llvm-lld-pic
12#skip csky-freestanding-eabihf-baseline-whole-llvm-lld-pic
13#skip csky-linux-eabi-baseline-whole-llvm-lld-pic
14#skip csky-linux-eabihf-baseline-whole-llvm-lld-pic
15#skip csky-linux-gnueabi-baseline-whole-llvm-lld-pic
16#skip csky-linux-gnueabihf-baseline-whole-llvm-lld-pic
17
18#skip loongarch32-linux-gnuf32-baseline-whole-llvm-lld-pic
19#skip loongarch32-linux-musl-baseline-whole-llvm-lld-pic
20#skip loongarch32-linux-muslf32-baseline-whole-llvm-lld-pic
21#skip loongarch32-linux-muslsf-baseline-whole-llvm-lld-pic
22#skip loongarch32-uefi-none-baseline-whole-llvm-lld-pic
23
24#skip loongarch64-linux-gnuf32-baseline-whole-llvm-lld-pic
25#skip loongarch64-linux-muslf32-baseline-whole-llvm-lld-pic
26#skip loongarch64-uefi-none-baseline-whole-llvm-lld-pic
27
28#skip mipsel-psx-eabi-baseline-whole-llvm-lld-pic
29
30#skip nvptx-cuda-none-baseline-whole-llvm-lld-pic
31#skip nvptx-nvcl-none-baseline-whole-llvm-lld-pic
32
33#skip nvptx64-cuda-none-baseline-whole-llvm-lld-pic
34#skip nvptx64-nvcl-none-baseline-whole-llvm-lld-pic
35
36#skip riscv32-uefi-none-baseline-whole-llvm-lld-pic
37
38#skip riscv32be-freestanding-none-baseline-whole-llvm-lld-pic
39
40#skip riscv64-uefi-none-baseline-whole-llvm-lld-pic
41
42#skip riscv64be-freestanding-none-baseline-whole-llvm-lld-pic
43
44#skip spirv32-opencl-none-baseline-whole-llvm-lld-pic
45#skip spirv32-opengl-none-baseline-whole-llvm-lld-pic
46#skip spirv32-vulkan-none-baseline-whole-llvm-lld-pic
47
48#skip spirv64-amdhsa-none-baseline-whole-llvm-lld-pic
49#skip spirv64-opencl-none-baseline-whole-llvm-lld-pic
50#skip spirv64-vulkan-none-baseline-whole-llvm-lld-pic
51
52#skip xcore-freestanding-none-baseline-whole-llvm-lld-pic
53
54#skip xtensa-freestanding-call0-baseline-whole-llvm-lld-pic
55#skip xtensa-freestanding-none-baseline-whole-llvm-lld-pic
56#skip xtensa-linux-call0-baseline-whole-llvm-lld-pic
57#skip xtensa-linux-none-baseline-whole-llvm-lld-pic
58
59#obj {
60--name llvm_targets
61-Mroot=object.zig
62-fno-emit-asm -femit-bin
63#}
64
65#write object.zig
66#update
67#check errors
test/llvm-targets/matrix.zon deleted-355
......@@ -1,355 +0,0 @@
1.{
2 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .driverkit = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic },
3 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .freebsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
4 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
5 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .fuchsia = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
6 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .haiku = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
7 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .hurd = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
8 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .ios = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic },
9 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .ios = .{} }, .abi = .{ .simulator = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic },
10 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .android = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
11 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
12 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
13 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
14 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .ohos = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
15 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .maccatalyst = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic },
16 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .macos = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic },
17 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
18 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .openbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
19 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
20 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .serenity = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
21 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .@"switch" = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
22 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .tvos = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic },
23 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .tvos = .{} }, .abi = .{ .simulator = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic },
24 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .uefi = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
25 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .visionos = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic },
26 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .visionos = .{} }, .abi = .{ .simulator = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic },
27 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .watchos = .{} }, .abi = .{ .ilp32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic },
28 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .watchos = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic },
29 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .watchos = .{} }, .abi = .{ .simulator = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic },
30 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .windows = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
31 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .windows = .{} }, .abi = .{ .itanium = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
32 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .windows = .{} }, .abi = .{ .msvc = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
33
34 .{ .cpu = .{ .aarch64_be = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
35 .{ .cpu = .{ .aarch64_be = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
36 .{ .cpu = .{ .aarch64_be = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
37 .{ .cpu = .{ .aarch64_be = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
38 .{ .cpu = .{ .aarch64_be = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
39
40 .{ .cpu = .{ .amdgcn = .{} }, .os = .{ .amdhsa = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
41 .{ .cpu = .{ .amdgcn = .{} }, .os = .{ .amdpal = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
42 .{ .cpu = .{ .amdgcn = .{} }, .os = .{ .mesa3d = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
43
44 .{ .cpu = .{ .arc = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
45 .{ .cpu = .{ .arc = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
46 .{ .cpu = .{ .arc = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
47
48 .{ .cpu = .{ .arm = .{} }, .os = .{ .@"3ds" = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
49 .{ .cpu = .{ .arm = .{} }, .os = .{ .freebsd = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
50 .{ .cpu = .{ .arm = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
51 .{ .cpu = .{ .arm = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
52 .{ .cpu = .{ .arm = .{} }, .os = .{ .fuchsia = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
53 .{ .cpu = .{ .arm = .{} }, .os = .{ .gba = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
54 .{ .cpu = .{ .arm = .{} }, .os = .{ .haiku = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
55 .{ .cpu = .{ .arm = .{} }, .os = .{ .linux = .{} }, .abi = .{ .androideabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
56 .{ .cpu = .{ .arm = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
57 .{ .cpu = .{ .arm = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
58 .{ .cpu = .{ .arm = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnueabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
59 .{ .cpu = .{ .arm = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnueabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
60 .{ .cpu = .{ .arm = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
61 .{ .cpu = .{ .arm = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
62 .{ .cpu = .{ .arm = .{} }, .os = .{ .linux = .{} }, .abi = .{ .ohoseabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
63 .{ .cpu = .{ .arm = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
64 .{ .cpu = .{ .arm = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
65 .{ .cpu = .{ .arm = .{} }, .os = .{ .openbsd = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
66 .{ .cpu = .{ .arm = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
67 .{ .cpu = .{ .arm = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
68 .{ .cpu = .{ .arm = .{} }, .os = .{ .uefi = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
69 .{ .cpu = .{ .arm = .{} }, .os = .{ .uefi = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
70 .{ .cpu = .{ .arm = .{} }, .os = .{ .vita = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
71
72 .{ .cpu = .{ .armeb = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
73 .{ .cpu = .{ .armeb = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
74 .{ .cpu = .{ .armeb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
75 .{ .cpu = .{ .armeb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
76 .{ .cpu = .{ .armeb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnueabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
77 .{ .cpu = .{ .armeb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnueabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
78 .{ .cpu = .{ .armeb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
79 .{ .cpu = .{ .armeb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
80 .{ .cpu = .{ .armeb = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
81 .{ .cpu = .{ .armeb = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
82 .{ .cpu = .{ .armeb = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
83 .{ .cpu = .{ .armeb = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
84
85 .{ .cpu = .{ .avr = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
86 .{ .cpu = .{ .avr = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
87
88 .{ .cpu = .{ .bpfeb = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
89
90 .{ .cpu = .{ .bpfel = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
91
92 .{ .cpu = .{ .csky = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
93 .{ .cpu = .{ .csky = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
94 .{ .cpu = .{ .csky = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
95 .{ .cpu = .{ .csky = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
96 .{ .cpu = .{ .csky = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnueabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
97 .{ .cpu = .{ .csky = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnueabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
98
99 .{ .cpu = .{ .hexagon = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
100 .{ .cpu = .{ .hexagon = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
101 .{ .cpu = .{ .hexagon = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
102
103 .{ .cpu = .{ .lanai = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
104
105 .{ .cpu = .{ .loongarch32 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
106 .{ .cpu = .{ .loongarch32 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
107 .{ .cpu = .{ .loongarch32 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnuf32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
108 .{ .cpu = .{ .loongarch32 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnusf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
109 .{ .cpu = .{ .loongarch32 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
110 .{ .cpu = .{ .loongarch32 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .muslf32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
111 .{ .cpu = .{ .loongarch32 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .muslsf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
112 .{ .cpu = .{ .loongarch32 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
113 .{ .cpu = .{ .loongarch32 = .{} }, .os = .{ .uefi = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
114
115 .{ .cpu = .{ .loongarch64 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
116 .{ .cpu = .{ .loongarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
117 .{ .cpu = .{ .loongarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnuf32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
118 .{ .cpu = .{ .loongarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnusf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
119 .{ .cpu = .{ .loongarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
120 .{ .cpu = .{ .loongarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .muslf32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
121 .{ .cpu = .{ .loongarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .muslsf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
122 .{ .cpu = .{ .loongarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
123 .{ .cpu = .{ .loongarch64 = .{} }, .os = .{ .uefi = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
124
125 .{ .cpu = .{ .m68k = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
126 .{ .cpu = .{ .m68k = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
127 .{ .cpu = .{ .m68k = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
128 .{ .cpu = .{ .m68k = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
129 .{ .cpu = .{ .m68k = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
130 .{ .cpu = .{ .m68k = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
131
132 .{ .cpu = .{ .mips = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
133 .{ .cpu = .{ .mips = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
134 .{ .cpu = .{ .mips = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
135 .{ .cpu = .{ .mips = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
136 .{ .cpu = .{ .mips = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnueabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
137 .{ .cpu = .{ .mips = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnueabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
138 .{ .cpu = .{ .mips = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
139 .{ .cpu = .{ .mips = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
140 .{ .cpu = .{ .mips = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
141 .{ .cpu = .{ .mips = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
142 .{ .cpu = .{ .mips = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
143 .{ .cpu = .{ .mips = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
144
145 .{ .cpu = .{ .mipsel = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
146 .{ .cpu = .{ .mipsel = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
147 .{ .cpu = .{ .mipsel = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
148 .{ .cpu = .{ .mipsel = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
149 .{ .cpu = .{ .mipsel = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnueabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
150 .{ .cpu = .{ .mipsel = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnueabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
151 .{ .cpu = .{ .mipsel = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
152 .{ .cpu = .{ .mipsel = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
153 .{ .cpu = .{ .mipsel = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
154 .{ .cpu = .{ .mipsel = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
155 .{ .cpu = .{ .mipsel = .{} }, .os = .{ .psx = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
156 .{ .cpu = .{ .mipsel = .{} }, .os = .{ .psp = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
157 .{ .cpu = .{ .mipsel = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
158 .{ .cpu = .{ .mipsel = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
159
160 .{ .cpu = .{ .mips64 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
161 .{ .cpu = .{ .mips64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .abin32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
162 .{ .cpu = .{ .mips64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnuabi64 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
163 .{ .cpu = .{ .mips64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnuabin32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
164 .{ .cpu = .{ .mips64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .muslabi64 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
165 .{ .cpu = .{ .mips64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .muslabin32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
166 .{ .cpu = .{ .mips64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
167 .{ .cpu = .{ .mips64 = .{} }, .os = .{ .openbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
168
169 .{ .cpu = .{ .mips64el = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
170 .{ .cpu = .{ .mips64el = .{} }, .os = .{ .linux = .{} }, .abi = .{ .abin32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
171 .{ .cpu = .{ .mips64el = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnuabi64 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
172 .{ .cpu = .{ .mips64el = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnuabin32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
173 .{ .cpu = .{ .mips64el = .{} }, .os = .{ .linux = .{} }, .abi = .{ .muslabi64 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
174 .{ .cpu = .{ .mips64el = .{} }, .os = .{ .linux = .{} }, .abi = .{ .muslabin32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
175 .{ .cpu = .{ .mips64el = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
176 .{ .cpu = .{ .mips64el = .{} }, .os = .{ .openbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
177
178 .{ .cpu = .{ .msp430 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
179
180 .{ .cpu = .{ .nvptx = .{} }, .os = .{ .cuda = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
181 .{ .cpu = .{ .nvptx = .{} }, .os = .{ .nvcl = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
182
183 .{ .cpu = .{ .nvptx64 = .{} }, .os = .{ .cuda = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
184 .{ .cpu = .{ .nvptx64 = .{} }, .os = .{ .nvcl = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
185
186 .{ .cpu = .{ .powerpc = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
187 .{ .cpu = .{ .powerpc = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
188 .{ .cpu = .{ .powerpc = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
189 .{ .cpu = .{ .powerpc = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
190 .{ .cpu = .{ .powerpc = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
191 .{ .cpu = .{ .powerpc = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
192 .{ .cpu = .{ .powerpc = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
193 .{ .cpu = .{ .powerpc = .{} }, .os = .{ .openbsd = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
194 .{ .cpu = .{ .powerpc = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
195 .{ .cpu = .{ .powerpc = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
196 .{ .cpu = .{ .powerpc = .{} }, .os = .{ .wiiu = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
197
198 .{ .cpu = .{ .powerpcle = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
199 .{ .cpu = .{ .powerpcle = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
200
201 .{ .cpu = .{ .powerpc64 = .{} }, .os = .{ .freebsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
202 .{ .cpu = .{ .powerpc64 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
203 .{ .cpu = .{ .powerpc64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
204 .{ .cpu = .{ .powerpc64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
205 .{ .cpu = .{ .powerpc64 = .{} }, .os = .{ .openbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
206 .{ .cpu = .{ .powerpc64 = .{} }, .os = .{ .ps3 = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
207 .{ .cpu = .{ .powerpc64 = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
208
209 .{ .cpu = .{ .powerpc64le = .{} }, .os = .{ .freebsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
210 .{ .cpu = .{ .powerpc64le = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
211 .{ .cpu = .{ .powerpc64le = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
212 .{ .cpu = .{ .powerpc64le = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
213 .{ .cpu = .{ .powerpc64le = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
214
215 .{ .cpu = .{ .riscv32 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
216 .{ .cpu = .{ .riscv32 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
217 .{ .cpu = .{ .riscv32 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
218 .{ .cpu = .{ .riscv32 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
219 .{ .cpu = .{ .riscv32 = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
220 .{ .cpu = .{ .riscv32 = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
221 .{ .cpu = .{ .riscv32 = .{} }, .os = .{ .uefi = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
222
223 .{ .cpu = .{ .riscv32be = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
224
225 .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .freebsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
226 .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
227 .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .fuchsia = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
228 .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .haiku = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
229 .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .hurd = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
230 .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .android = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
231 .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
232 .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
233 .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
234 .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
235 .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .openbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
236 .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
237 .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .serenity = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
238 .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .uefi = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
239
240 .{ .cpu = .{ .riscv64be = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
241
242 .{ .cpu = .{ .s390x = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
243 .{ .cpu = .{ .s390x = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
244 .{ .cpu = .{ .s390x = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
245 .{ .cpu = .{ .s390x = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
246
247 .{ .cpu = .{ .sparc = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
248 .{ .cpu = .{ .sparc = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
249 .{ .cpu = .{ .sparc = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
250 .{ .cpu = .{ .sparc = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
251 .{ .cpu = .{ .sparc = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
252
253 .{ .cpu = .{ .sparc64 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
254 .{ .cpu = .{ .sparc64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
255 .{ .cpu = .{ .sparc64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
256 .{ .cpu = .{ .sparc64 = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
257 .{ .cpu = .{ .sparc64 = .{} }, .os = .{ .openbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
258 .{ .cpu = .{ .sparc64 = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
259
260 .{ .cpu = .{ .spirv32 = .{} }, .os = .{ .opencl = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
261 .{ .cpu = .{ .spirv32 = .{} }, .os = .{ .opengl = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
262 .{ .cpu = .{ .spirv32 = .{} }, .os = .{ .vulkan = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
263
264 .{ .cpu = .{ .spirv64 = .{} }, .os = .{ .amdhsa = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
265 .{ .cpu = .{ .spirv64 = .{} }, .os = .{ .opencl = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
266 .{ .cpu = .{ .spirv64 = .{} }, .os = .{ .vulkan = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
267
268 .{ .cpu = .{ .thumb = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
269 .{ .cpu = .{ .thumb = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
270 .{ .cpu = .{ .thumb = .{} }, .os = .{ .fuchsia = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
271 .{ .cpu = .{ .thumb = .{} }, .os = .{ .gba = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
272 .{ .cpu = .{ .thumb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
273 .{ .cpu = .{ .thumb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
274 .{ .cpu = .{ .thumb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
275 .{ .cpu = .{ .thumb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
276 .{ .cpu = .{ .thumb = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
277 .{ .cpu = .{ .thumb = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
278 .{ .cpu = .{ .thumb = .{} }, .os = .{ .vita = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
279 .{ .cpu = .{ .thumb = .{} }, .os = .{ .windows = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
280 .{ .cpu = .{ .thumb = .{} }, .os = .{ .windows = .{} }, .abi = .{ .itanium = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
281 .{ .cpu = .{ .thumb = .{} }, .os = .{ .windows = .{} }, .abi = .{ .msvc = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
282
283 .{ .cpu = .{ .thumbeb = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
284 .{ .cpu = .{ .thumbeb = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
285 .{ .cpu = .{ .thumbeb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
286 .{ .cpu = .{ .thumbeb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
287 .{ .cpu = .{ .thumbeb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
288 .{ .cpu = .{ .thumbeb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
289 .{ .cpu = .{ .thumbeb = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
290 .{ .cpu = .{ .thumbeb = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
291
292 .{ .cpu = .{ .ve = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
293 .{ .cpu = .{ .ve = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
294
295 .{ .cpu = .{ .wasm32 = .{} }, .os = .{ .emscripten = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
296 .{ .cpu = .{ .wasm32 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
297 .{ .cpu = .{ .wasm32 = .{} }, .os = .{ .wasi = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
298
299 .{ .cpu = .{ .wasm64 = .{} }, .os = .{ .emscripten = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
300 .{ .cpu = .{ .wasm64 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
301 .{ .cpu = .{ .wasm64 = .{} }, .os = .{ .wasi = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
302
303 .{ .cpu = .{ .x86 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
304 .{ .cpu = .{ .x86 = .{} }, .os = .{ .haiku = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
305 .{ .cpu = .{ .x86 = .{} }, .os = .{ .hurd = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
306 .{ .cpu = .{ .x86 = .{} }, .os = .{ .illumos = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
307 .{ .cpu = .{ .x86 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .android = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
308 .{ .cpu = .{ .x86 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
309 .{ .cpu = .{ .x86 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
310 .{ .cpu = .{ .x86 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
311 .{ .cpu = .{ .x86 = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
312 .{ .cpu = .{ .x86 = .{} }, .os = .{ .openbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
313 .{ .cpu = .{ .x86 = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
314 .{ .cpu = .{ .x86 = .{} }, .os = .{ .uefi = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
315 .{ .cpu = .{ .x86 = .{} }, .os = .{ .windows = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
316 .{ .cpu = .{ .x86 = .{} }, .os = .{ .windows = .{} }, .abi = .{ .itanium = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
317 .{ .cpu = .{ .x86 = .{} }, .os = .{ .windows = .{} }, .abi = .{ .msvc = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
318
319 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .freebsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
320 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
321 .{ .cpu = .{ .x86_64 = .{ .features = .{ .add = .{.soft_float}, .remove = .{ .mmx, .sse, .sse2, .avx, .avx2 } } } }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
322 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .fuchsia = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
323 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .dragonfly = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
324 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .driverkit = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic },
325 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .haiku = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
326 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .hurd = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
327 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .illumos = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
328 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .android = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
329 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
330 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnux32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
331 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
332 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .muslx32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
333 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
334 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .ohos = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
335 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .x32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
336 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .maccatalyst = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic },
337 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .macos = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic },
338 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
339 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .openbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
340 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .ps4 = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
341 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .ps5 = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
342 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
343 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .serenity = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
344 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .uefi = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
345 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .windows = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
346 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .windows = .{} }, .abi = .{ .itanium = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
347 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .windows = .{} }, .abi = .{ .msvc = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
348
349 .{ .cpu = .{ .xcore = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
350
351 .{ .cpu = .{ .xtensa = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .call0 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
352 .{ .cpu = .{ .xtensa = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
353 .{ .cpu = .{ .xtensa = .{} }, .os = .{ .linux = .{} }, .abi = .{ .call0 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
354 .{ .cpu = .{ .xtensa = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
355}
test/llvm/allowzero created+98
......@@ -0,0 +1,98 @@
1#skip amdgcn-amdhsa-none-baseline-whole-llvm-lld-pic
2#skip amdgcn-amdpal-none-baseline-whole-llvm-lld-pic
3#skip amdgcn-mesa3d-none-baseline-whole-llvm-lld-pic
4
5#skip bpfeb-freestanding-none-baseline-whole-llvm-lld-pic
6
7#skip bpfel-freestanding-none-baseline-whole-llvm-lld-pic
8
9#skip nvptx-cuda-none-baseline-whole-llvm-lld-pic
10#skip nvptx-nvcl-none-baseline-whole-llvm-lld-pic
11
12#skip nvptx64-cuda-none-baseline-whole-llvm-lld-pic
13#skip nvptx64-nvcl-none-baseline-whole-llvm-lld-pic
14
15#skip spirv32-opencl-none-baseline-whole-llvm-lld-pic
16#skip spirv32-opengl-none-baseline-whole-llvm-lld-pic
17#skip spirv32-vulkan-none-baseline-whole-llvm-lld-pic
18
19#skip spirv64-amdhsa-none-baseline-whole-llvm-lld-pic
20#skip spirv64-opencl-none-baseline-whole-llvm-lld-pic
21#skip spirv64-vulkan-none-baseline-whole-llvm-lld-pic
22
23#skip x86_64-linux-gnux32-baseline-whole-llvm-new-pic
24#skip x86_64-linux-muslx32-baseline-whole-llvm-new-pic
25#skip x86_64-linux-x32-baseline-whole-llvm-new-pic
26
27#obj {
28--name test -fno-lld -fno-new-linker -ofmt=llvmir
29-Mroot=test.zig
30#}
31
32#write test.zig {
33export fn entry(ptr: *allowzero i16) i16 {
34 return ptr.*;
35}
36#}
37#update "load"
38#check llvm {
39define #...@test.entry(ptr #...%0) #...#0 #...{
40#...load i16, ptr %0#...
41}
42
43#...
44attributes #0 = {#... null_pointer_is_valid #...}
45#}
46
47#write test.zig {
48export fn entry(ptr: *allowzero i16) void {
49 ptr.* = 42;
50}
51#}
52#update "store"
53#check llvm {
54define #...@test.entry(ptr #...%0) #...#0 #...{
55#...store i16 42, ptr %0#...
56}
57
58#...
59attributes #0 = {#... null_pointer_is_valid #...}
60#}
61
62#write test.zig {
63export fn entry(ptr: *allowzero i16) i16 {
64 return entry2(ptr[0..1]);
65}
66fn entry2(slice: []allowzero i16) i16 {
67 @setRuntimeSafety(false);
68 return slice[0];
69}
70#}
71#update "slice load"
72#check llvm {
73define #...@test.entry2(#..., ptr #...%1, #...) #...#2 #...{
74#...load i16, ptr %#...
75}
76
77#...
78attributes #2 = {#... null_pointer_is_valid #...}
79#}
80
81#write test.zig {
82export fn entry(ptr: *allowzero i16) void {
83 entry2(ptr[0..1]);
84}
85fn entry2(slice: []allowzero i16) void {
86 @setRuntimeSafety(false);
87 slice[0] = 42;
88}
89#}
90#update "slice store"
91#check llvm {
92define #...@test.entry2(#..., ptr #...%1, #...) #...#2 #...{
93#...store i16 42, ptr %#...
94}
95
96#...
97attributes #2 = {#... null_pointer_is_valid #...}
98#}
test/llvm/array_to_vector created+109
......@@ -0,0 +1,109 @@
1#skip amdgcn-amdhsa-none-baseline-whole-llvm-lld-pic
2#skip amdgcn-amdpal-none-baseline-whole-llvm-lld-pic
3#skip amdgcn-mesa3d-none-baseline-whole-llvm-lld-pic
4
5#skip bpfeb-freestanding-none-baseline-whole-llvm-lld-pic
6
7#skip bpfel-freestanding-none-baseline-whole-llvm-lld-pic
8
9#skip loongarch32-freestanding-none-baseline-whole-llvm-lld-pic
10#skip loongarch32-linux-gnu-baseline-whole-llvm-lld-pic
11#skip loongarch32-linux-gnuf32-baseline-whole-llvm-lld-pic
12#skip loongarch32-linux-gnusf-baseline-whole-llvm-lld-pic
13#skip loongarch32-linux-musl-baseline-whole-llvm-lld-pic
14#skip loongarch32-linux-muslf32-baseline-whole-llvm-lld-pic
15#skip loongarch32-linux-muslsf-baseline-whole-llvm-lld-pic
16#skip loongarch32-linux-none-baseline-whole-llvm-lld-pic
17#skip loongarch32-uefi-none-baseline-whole-llvm-lld-pic
18
19#skip loongarch64-freestanding-none-baseline-whole-llvm-lld-pic
20#skip loongarch64-linux-gnu-baseline-whole-llvm-lld-pic
21#skip loongarch64-linux-gnuf32-baseline-whole-llvm-lld-pic
22#skip loongarch64-linux-gnusf-baseline-whole-llvm-lld-pic
23#skip loongarch64-linux-musl-baseline-whole-llvm-lld-pic
24#skip loongarch64-linux-muslf32-baseline-whole-llvm-lld-pic
25#skip loongarch64-linux-muslsf-baseline-whole-llvm-lld-pic
26#skip loongarch64-linux-none-baseline-whole-llvm-lld-pic
27#skip loongarch64-uefi-none-baseline-whole-llvm-lld-pic
28
29#skip nvptx-cuda-none-baseline-whole-llvm-lld-pic
30#skip nvptx-nvcl-none-baseline-whole-llvm-lld-pic
31
32#skip nvptx64-cuda-none-baseline-whole-llvm-lld-pic
33#skip nvptx64-nvcl-none-baseline-whole-llvm-lld-pic
34
35#skip riscv32-freestanding-none-baseline-whole-llvm-lld-pic
36#skip riscv32-linux-gnu-baseline-whole-llvm-lld-pic
37#skip riscv32-linux-musl-baseline-whole-llvm-lld-pic
38#skip riscv32-linux-none-baseline-whole-llvm-lld-pic
39#skip riscv32-netbsd-none-baseline-whole-llvm-lld-pic
40#skip riscv32-rtems-none-baseline-whole-llvm-lld-pic
41#skip riscv32-uefi-none-baseline-whole-llvm-lld-pic
42#skip riscv32be-freestanding-none-baseline-whole-llvm-lld-pic
43
44#skip riscv64-freebsd-none-baseline-whole-llvm-lld-pic
45#skip riscv64-freestanding-none-baseline-whole-llvm-lld-pic
46#skip riscv64-fuchsia-none-baseline-whole-llvm-lld-pic
47#skip riscv64-haiku-none-baseline-whole-llvm-lld-pic
48#skip riscv64-hurd-gnu-baseline-whole-llvm-lld-pic
49#skip riscv64-linux-android-baseline-whole-llvm-lld-pic
50#skip riscv64-linux-gnu-baseline-whole-llvm-lld-pic
51#skip riscv64-linux-musl-baseline-whole-llvm-lld-pic
52#skip riscv64-linux-none-baseline-whole-llvm-lld-pic
53#skip riscv64-netbsd-none-baseline-whole-llvm-lld-pic
54#skip riscv64-openbsd-none-baseline-whole-llvm-lld-pic
55#skip riscv64-rtems-none-baseline-whole-llvm-lld-pic
56#skip riscv64-serenity-none-baseline-whole-llvm-lld-pic
57#skip riscv64-uefi-none-baseline-whole-llvm-lld-pic
58#skip riscv64be-freestanding-none-baseline-whole-llvm-lld-pic
59
60#skip spirv32-opencl-none-baseline-whole-llvm-lld-pic
61#skip spirv32-opengl-none-baseline-whole-llvm-lld-pic
62#skip spirv32-vulkan-none-baseline-whole-llvm-lld-pic
63
64#skip spirv64-amdhsa-none-baseline-whole-llvm-lld-pic
65#skip spirv64-opencl-none-baseline-whole-llvm-lld-pic
66#skip spirv64-vulkan-none-baseline-whole-llvm-lld-pic
67
68#skip x86_64-linux-gnux32-baseline-whole-llvm-new-pic
69#skip x86_64-linux-muslx32-baseline-whole-llvm-new-pic
70#skip x86_64-linux-x32-baseline-whole-llvm-new-pic
71
72#obj {
73--name test -fno-lld -fno-new-linker -ofmt=llvmir
74-Mroot=test.zig
75#}
76
77#write test.zig {
78export fn entry(arr: *const [16]u8) @Vector(16, u8) {
79 return arr.*;
80}
81#}
82#update "one vector load"
83#check llvm {
84define #...<16 x i8> @test.entry(#...) #...{
85#...
86 %1 = alloca [16 x i8], align 1#...
87 %3 = load <16 x i8>, ptr %1, align 1#...
88 ret <16 x i8> %3#...
89#}
90
91#write test.zig {
92export fn entry(a: *@Vector(8, u8), b: *@Vector(8, u8), src: [*]const u8) void {
93 const q: @Vector(16, u8) = src[0..16].*;
94 a.* = @shuffle(u8, q, undefined, @Vector(8, i32){ 0, 1, 2, 3, 4, 5, 6, 7 });
95 b.* = @shuffle(u8, q, undefined, @Vector(8, i32){ 7, 8, 9, 10, 11, 12, 13, 14 });
96}
97#}
98#update "feeding overlapping shuffles"
99#check llvm {
100define #...void @test.entry(ptr #...%0, ptr #...%1, #...) #...{
101#...
102 %11 = load <16 x i8>, ptr %#...
103 %12 = shufflevector <16 x i8> %11, #...
104 store <8 x i8> %12, ptr %0, align 8#...
105 %13 = shufflevector <16 x i8> %11, #...
106 store <8 x i8> %13, ptr %1, align 8#...
107 ret void#...
108}
109#}
test/llvm/dead_store created+65
......@@ -0,0 +1,65 @@
1#skip amdgcn-amdhsa-none-baseline-whole-llvm-lld-pic
2#skip amdgcn-amdpal-none-baseline-whole-llvm-lld-pic
3#skip amdgcn-mesa3d-none-baseline-whole-llvm-lld-pic
4
5#skip nvptx-cuda-none-baseline-whole-llvm-lld-pic
6#skip nvptx-nvcl-none-baseline-whole-llvm-lld-pic
7
8#skip nvptx64-cuda-none-baseline-whole-llvm-lld-pic
9#skip nvptx64-nvcl-none-baseline-whole-llvm-lld-pic
10
11#skip spirv32-opencl-none-baseline-whole-llvm-lld-pic
12#skip spirv32-opengl-none-baseline-whole-llvm-lld-pic
13#skip spirv32-vulkan-none-baseline-whole-llvm-lld-pic
14
15#skip spirv64-amdhsa-none-baseline-whole-llvm-lld-pic
16#skip spirv64-opencl-none-baseline-whole-llvm-lld-pic
17#skip spirv64-vulkan-none-baseline-whole-llvm-lld-pic
18
19#skip x86_64-linux-gnux32-baseline-whole-llvm-new-pic
20#skip x86_64-linux-muslx32-baseline-whole-llvm-new-pic
21#skip x86_64-linux-x32-baseline-whole-llvm-new-pic
22
23#obj {
24--name test -fno-lld -fno-new-linker -ofmt=llvmir
25-Mroot=test.zig
26#}
27
28#write test.zig {
29export fn entry(ptr: *volatile i16) void {
30 ptr.* = 123;
31 ptr.* = 321;
32}
33#}
34#update "volatile"
35#check llvm {
36define #...@test.entry(ptr #...%0) #...{
37#...store volatile i16 123, ptr %0#...
38#...store volatile i16 321, ptr %0#...
39}
40
41#}
42
43#write test.zig {
44export fn entry(ptr: *volatile i16) void {
45 entry2(ptr[0..1]);
46}
47fn entry2(slice: []volatile i16) void {
48 @setRuntimeSafety(false);
49 slice[0] = 123;
50 slice[0] = 321;
51}
52#}
53#update "volatile slice"
54#check llvm {
55define #...@test.entry(#...) #...{
56#...
57}
58
59#...
60define #...@test.entry2(#...) #...{
61#...store volatile i16 123, ptr %#...
62#...store volatile i16 321, ptr %#...
63}
64
65#}
test/llvm/empty_analyze created+50
......@@ -0,0 +1,50 @@
1#skip amdgcn-amdpal-none-baseline-whole-llvm-lld-pic
2#skip amdgcn-mesa3d-none-baseline-whole-llvm-lld-pic
3
4#skip arm-uefi-eabi-baseline-whole-llvm-lld-pic
5#skip arm-uefi-eabihf-baseline-whole-llvm-lld-pic
6
7#skip csky-freestanding-eabi-baseline-whole-llvm-lld-pic
8#skip csky-freestanding-eabihf-baseline-whole-llvm-lld-pic
9#skip csky-linux-eabi-baseline-whole-llvm-lld-pic
10#skip csky-linux-eabihf-baseline-whole-llvm-lld-pic
11#skip csky-linux-gnueabi-baseline-whole-llvm-lld-pic
12#skip csky-linux-gnueabihf-baseline-whole-llvm-lld-pic
13
14#skip loongarch32-linux-gnuf32-baseline-whole-llvm-lld-pic
15#skip loongarch32-linux-musl-baseline-whole-llvm-lld-pic
16#skip loongarch32-linux-muslf32-baseline-whole-llvm-lld-pic
17#skip loongarch32-linux-muslsf-baseline-whole-llvm-lld-pic
18#skip loongarch32-uefi-none-baseline-whole-llvm-lld-pic
19
20#skip loongarch64-linux-gnuf32-baseline-whole-llvm-lld-pic
21#skip loongarch64-linux-muslf32-baseline-whole-llvm-lld-pic
22#skip loongarch64-uefi-none-baseline-whole-llvm-lld-pic
23
24#skip mipsel-psx-eabi-baseline-whole-llvm-lld-pic
25
26#skip riscv32-uefi-none-baseline-whole-llvm-lld-pic
27
28#skip riscv32be-freestanding-none-baseline-whole-llvm-lld-pic
29
30#skip riscv64-uefi-none-baseline-whole-llvm-lld-pic
31
32#skip riscv64be-freestanding-none-baseline-whole-llvm-lld-pic
33
34#skip spirv32-opencl-none-baseline-whole-llvm-lld-pic
35#skip spirv32-opengl-none-baseline-whole-llvm-lld-pic
36#skip spirv32-vulkan-none-baseline-whole-llvm-lld-pic
37
38#skip spirv64-amdhsa-none-baseline-whole-llvm-lld-pic
39#skip spirv64-opencl-none-baseline-whole-llvm-lld-pic
40#skip spirv64-vulkan-none-baseline-whole-llvm-lld-pic
41
42#obj {
43--name test
44-Mroot=test.zig
45-fno-emit-asm -fno-emit-bin
46#}
47
48#write test.zig
49#update
50#check errors
test/llvm/empty_assembly created+55
......@@ -0,0 +1,55 @@
1#skip amdgcn-amdpal-none-baseline-whole-llvm-lld-pic
2#skip amdgcn-mesa3d-none-baseline-whole-llvm-lld-pic
3
4#skip arm-uefi-eabi-baseline-whole-llvm-lld-pic
5#skip arm-uefi-eabihf-baseline-whole-llvm-lld-pic
6
7#skip csky-freestanding-eabi-baseline-whole-llvm-lld-pic
8#skip csky-freestanding-eabihf-baseline-whole-llvm-lld-pic
9#skip csky-linux-eabi-baseline-whole-llvm-lld-pic
10#skip csky-linux-eabihf-baseline-whole-llvm-lld-pic
11#skip csky-linux-gnueabi-baseline-whole-llvm-lld-pic
12#skip csky-linux-gnueabihf-baseline-whole-llvm-lld-pic
13
14#skip loongarch32-linux-gnuf32-baseline-whole-llvm-lld-pic
15#skip loongarch32-linux-musl-baseline-whole-llvm-lld-pic
16#skip loongarch32-linux-muslf32-baseline-whole-llvm-lld-pic
17#skip loongarch32-linux-muslsf-baseline-whole-llvm-lld-pic
18#skip loongarch32-uefi-none-baseline-whole-llvm-lld-pic
19
20#skip loongarch64-linux-gnuf32-baseline-whole-llvm-lld-pic
21#skip loongarch64-linux-muslf32-baseline-whole-llvm-lld-pic
22#skip loongarch64-uefi-none-baseline-whole-llvm-lld-pic
23
24#skip mipsel-psx-eabi-baseline-whole-llvm-lld-pic
25
26#skip riscv32-uefi-none-baseline-whole-llvm-lld-pic
27
28#skip riscv32be-freestanding-none-baseline-whole-llvm-lld-pic
29
30#skip riscv64-uefi-none-baseline-whole-llvm-lld-pic
31
32#skip riscv64be-freestanding-none-baseline-whole-llvm-lld-pic
33
34#skip spirv32-opencl-none-baseline-whole-llvm-lld-pic
35#skip spirv32-opengl-none-baseline-whole-llvm-lld-pic
36#skip spirv32-vulkan-none-baseline-whole-llvm-lld-pic
37
38#skip spirv64-amdhsa-none-baseline-whole-llvm-lld-pic
39#skip spirv64-opencl-none-baseline-whole-llvm-lld-pic
40#skip spirv64-vulkan-none-baseline-whole-llvm-lld-pic
41
42#skip xtensa-freestanding-call0-baseline-whole-llvm-lld-pic
43#skip xtensa-freestanding-none-baseline-whole-llvm-lld-pic
44#skip xtensa-linux-call0-baseline-whole-llvm-lld-pic
45#skip xtensa-linux-none-baseline-whole-llvm-lld-pic
46
47#obj {
48--name test
49-Mroot=test.zig
50-femit-asm -fno-emit-bin
51#}
52
53#write test.zig
54#update
55#check errors
test/llvm/empty_object created+67
......@@ -0,0 +1,67 @@
1#skip amdgcn-amdpal-none-baseline-whole-llvm-lld-pic
2#skip amdgcn-mesa3d-none-baseline-whole-llvm-lld-pic
3
4#skip arc-freestanding-none-baseline-whole-llvm-lld-pic
5#skip arc-linux-gnu-baseline-whole-llvm-lld-pic
6#skip arc-linux-none-baseline-whole-llvm-lld-pic
7
8#skip arm-uefi-eabi-baseline-whole-llvm-lld-pic
9#skip arm-uefi-eabihf-baseline-whole-llvm-lld-pic
10
11#skip csky-freestanding-eabi-baseline-whole-llvm-lld-pic
12#skip csky-freestanding-eabihf-baseline-whole-llvm-lld-pic
13#skip csky-linux-eabi-baseline-whole-llvm-lld-pic
14#skip csky-linux-eabihf-baseline-whole-llvm-lld-pic
15#skip csky-linux-gnueabi-baseline-whole-llvm-lld-pic
16#skip csky-linux-gnueabihf-baseline-whole-llvm-lld-pic
17
18#skip loongarch32-linux-gnuf32-baseline-whole-llvm-lld-pic
19#skip loongarch32-linux-musl-baseline-whole-llvm-lld-pic
20#skip loongarch32-linux-muslf32-baseline-whole-llvm-lld-pic
21#skip loongarch32-linux-muslsf-baseline-whole-llvm-lld-pic
22#skip loongarch32-uefi-none-baseline-whole-llvm-lld-pic
23
24#skip loongarch64-linux-gnuf32-baseline-whole-llvm-lld-pic
25#skip loongarch64-linux-muslf32-baseline-whole-llvm-lld-pic
26#skip loongarch64-uefi-none-baseline-whole-llvm-lld-pic
27
28#skip mipsel-psx-eabi-baseline-whole-llvm-lld-pic
29
30#skip nvptx-cuda-none-baseline-whole-llvm-lld-pic
31#skip nvptx-nvcl-none-baseline-whole-llvm-lld-pic
32
33#skip nvptx64-cuda-none-baseline-whole-llvm-lld-pic
34#skip nvptx64-nvcl-none-baseline-whole-llvm-lld-pic
35
36#skip riscv32-uefi-none-baseline-whole-llvm-lld-pic
37
38#skip riscv32be-freestanding-none-baseline-whole-llvm-lld-pic
39
40#skip riscv64-uefi-none-baseline-whole-llvm-lld-pic
41
42#skip riscv64be-freestanding-none-baseline-whole-llvm-lld-pic
43
44#skip spirv32-opencl-none-baseline-whole-llvm-lld-pic
45#skip spirv32-opengl-none-baseline-whole-llvm-lld-pic
46#skip spirv32-vulkan-none-baseline-whole-llvm-lld-pic
47
48#skip spirv64-amdhsa-none-baseline-whole-llvm-lld-pic
49#skip spirv64-opencl-none-baseline-whole-llvm-lld-pic
50#skip spirv64-vulkan-none-baseline-whole-llvm-lld-pic
51
52#skip xcore-freestanding-none-baseline-whole-llvm-lld-pic
53
54#skip xtensa-freestanding-call0-baseline-whole-llvm-lld-pic
55#skip xtensa-freestanding-none-baseline-whole-llvm-lld-pic
56#skip xtensa-linux-call0-baseline-whole-llvm-lld-pic
57#skip xtensa-linux-none-baseline-whole-llvm-lld-pic
58
59#obj {
60--name test
61-Mroot=test.zig
62-fno-emit-asm -femit-bin
63#}
64
65#write test.zig
66#update
67#check errors
test/llvm/load_store_bool created+95
......@@ -0,0 +1,95 @@
1#skip amdgcn-amdhsa-none-baseline-whole-llvm-lld-pic
2#skip amdgcn-amdpal-none-baseline-whole-llvm-lld-pic
3#skip amdgcn-mesa3d-none-baseline-whole-llvm-lld-pic
4
5#skip bpfeb-freestanding-none-baseline-whole-llvm-lld-pic
6
7#skip bpfel-freestanding-none-baseline-whole-llvm-lld-pic
8
9#skip loongarch32-freestanding-none-baseline-whole-llvm-lld-pic
10#skip loongarch32-linux-gnu-baseline-whole-llvm-lld-pic
11#skip loongarch32-linux-gnuf32-baseline-whole-llvm-lld-pic
12#skip loongarch32-linux-gnusf-baseline-whole-llvm-lld-pic
13#skip loongarch32-linux-musl-baseline-whole-llvm-lld-pic
14#skip loongarch32-linux-muslf32-baseline-whole-llvm-lld-pic
15#skip loongarch32-linux-muslsf-baseline-whole-llvm-lld-pic
16#skip loongarch32-linux-none-baseline-whole-llvm-lld-pic
17#skip loongarch32-uefi-none-baseline-whole-llvm-lld-pic
18
19#skip loongarch64-freestanding-none-baseline-whole-llvm-lld-pic
20#skip loongarch64-linux-gnu-baseline-whole-llvm-lld-pic
21#skip loongarch64-linux-gnuf32-baseline-whole-llvm-lld-pic
22#skip loongarch64-linux-gnu-baseline-whole-llvm-lld-pic
23#skip loongarch64-linux-gnuf32-baseline-whole-llvm-lld-pic
24#skip loongarch64-linux-gnusf-baseline-whole-llvm-lld-pic
25#skip loongarch64-linux-musl-baseline-whole-llvm-lld-pic
26#skip loongarch64-linux-muslf32-baseline-whole-llvm-lld-pic
27#skip loongarch64-linux-muslsf-baseline-whole-llvm-lld-pic
28#skip loongarch64-linux-none-baseline-whole-llvm-lld-pic
29#skip loongarch64-uefi-none-baseline-whole-llvm-lld-pic
30
31#skip nvptx-cuda-none-baseline-whole-llvm-lld-pic
32#skip nvptx-nvcl-none-baseline-whole-llvm-lld-pic
33
34#skip nvptx64-cuda-none-baseline-whole-llvm-lld-pic
35#skip nvptx64-nvcl-none-baseline-whole-llvm-lld-pic
36
37#skip riscv32-freestanding-none-baseline-whole-llvm-lld-pic
38#skip riscv32-linux-gnu-baseline-whole-llvm-lld-pic
39#skip riscv32-linux-musl-baseline-whole-llvm-lld-pic
40#skip riscv32-linux-none-baseline-whole-llvm-lld-pic
41#skip riscv32-netbsd-none-baseline-whole-llvm-lld-pic
42#skip riscv32-rtems-none-baseline-whole-llvm-lld-pic
43#skip riscv32-uefi-none-baseline-whole-llvm-lld-pic
44
45#skip riscv32be-freestanding-none-baseline-whole-llvm-lld-pic
46
47#skip riscv64-freebsd-none-baseline-whole-llvm-lld-pic
48#skip riscv64-freestanding-none-baseline-whole-llvm-lld-pic
49#skip riscv64-fuchsia-none-baseline-whole-llvm-lld-pic
50#skip riscv64-haiku-none-baseline-whole-llvm-lld-pic
51#skip riscv64-hurd-gnu-baseline-whole-llvm-lld-pic
52#skip riscv64-linux-android-baseline-whole-llvm-lld-pic
53#skip riscv64-linux-gnu-baseline-whole-llvm-lld-pic
54#skip riscv64-linux-musl-baseline-whole-llvm-lld-pic
55#skip riscv64-linux-none-baseline-whole-llvm-lld-pic
56#skip riscv64-netbsd-none-baseline-whole-llvm-lld-pic
57#skip riscv64-openbsd-none-baseline-whole-llvm-lld-pic
58#skip riscv64-rtems-none-baseline-whole-llvm-lld-pic
59#skip riscv64-serenity-none-baseline-whole-llvm-lld-pic
60#skip riscv64-uefi-none-baseline-whole-llvm-lld-pic
61
62#skip riscv64be-freestanding-none-baseline-whole-llvm-lld-pic
63
64#skip x86_64-linux-gnux32-baseline-whole-llvm-new-pic
65#skip x86_64-linux-muslx32-baseline-whole-llvm-new-pic
66#skip x86_64-linux-x32-baseline-whole-llvm-new-pic
67
68#obj {
69--name test -fno-lld -fno-new-linker -ofmt=llvmir
70-Mroot=test.zig
71#}
72
73#write test.zig {
74export fn foo(a: *bool, b: *align(2) bool) void {
75 const tmp = a.*;
76 a.* = b.*;
77 b.* = tmp;
78}
79#}
80#update
81#check llvm {
82define #...void @test.foo(ptr #...%0, ptr #...%1) #...{
83#...
84 %5 = load i8, ptr %0, align 1#...
85 %6 = trunc nuw i8 %5 to i1#...
86 %8 = load i8, ptr %1, align 2#...
87 %9 = trunc nuw i8 %8 to i1#...
88 %10 = zext i1 %9 to i8#...
89 store i8 %10, ptr %0, align 1#...
90 %11 = zext i1 %6 to i8#...
91 store i8 %11, ptr %1, align 2#...
92 ret void#...
93}
94
95#}
test/llvm/matrix.zon created+355
......@@ -0,0 +1,355 @@
1.{
2 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .driverkit = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic },
3 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .freebsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
4 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
5 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .fuchsia = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
6 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .haiku = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
7 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .hurd = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
8 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .ios = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic },
9 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .ios = .{} }, .abi = .{ .simulator = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic },
10 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .android = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
11 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
12 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
13 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
14 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .ohos = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
15 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .maccatalyst = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic },
16 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .macos = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic },
17 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
18 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .openbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
19 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
20 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .serenity = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
21 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .@"switch" = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
22 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .tvos = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic },
23 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .tvos = .{} }, .abi = .{ .simulator = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic },
24 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .uefi = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
25 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .visionos = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic },
26 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .visionos = .{} }, .abi = .{ .simulator = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic },
27 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .watchos = .{} }, .abi = .{ .ilp32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic },
28 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .watchos = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic },
29 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .watchos = .{} }, .abi = .{ .simulator = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic },
30 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .windows = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
31 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .windows = .{} }, .abi = .{ .itanium = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
32 .{ .cpu = .{ .aarch64 = .{} }, .os = .{ .windows = .{} }, .abi = .{ .msvc = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
33
34 .{ .cpu = .{ .aarch64_be = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
35 .{ .cpu = .{ .aarch64_be = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
36 .{ .cpu = .{ .aarch64_be = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
37 .{ .cpu = .{ .aarch64_be = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
38 .{ .cpu = .{ .aarch64_be = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
39
40 .{ .cpu = .{ .amdgcn = .{} }, .os = .{ .amdhsa = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
41 .{ .cpu = .{ .amdgcn = .{} }, .os = .{ .amdpal = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
42 .{ .cpu = .{ .amdgcn = .{} }, .os = .{ .mesa3d = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
43
44 .{ .cpu = .{ .arc = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
45 .{ .cpu = .{ .arc = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
46 .{ .cpu = .{ .arc = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
47
48 .{ .cpu = .{ .arm = .{} }, .os = .{ .@"3ds" = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
49 .{ .cpu = .{ .arm = .{} }, .os = .{ .freebsd = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
50 .{ .cpu = .{ .arm = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
51 .{ .cpu = .{ .arm = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
52 .{ .cpu = .{ .arm = .{} }, .os = .{ .fuchsia = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
53 .{ .cpu = .{ .arm = .{} }, .os = .{ .gba = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
54 .{ .cpu = .{ .arm = .{} }, .os = .{ .haiku = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
55 .{ .cpu = .{ .arm = .{} }, .os = .{ .linux = .{} }, .abi = .{ .androideabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
56 .{ .cpu = .{ .arm = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
57 .{ .cpu = .{ .arm = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
58 .{ .cpu = .{ .arm = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnueabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
59 .{ .cpu = .{ .arm = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnueabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
60 .{ .cpu = .{ .arm = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
61 .{ .cpu = .{ .arm = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
62 .{ .cpu = .{ .arm = .{} }, .os = .{ .linux = .{} }, .abi = .{ .ohoseabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
63 .{ .cpu = .{ .arm = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
64 .{ .cpu = .{ .arm = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
65 .{ .cpu = .{ .arm = .{} }, .os = .{ .openbsd = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
66 .{ .cpu = .{ .arm = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
67 .{ .cpu = .{ .arm = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
68 .{ .cpu = .{ .arm = .{} }, .os = .{ .uefi = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
69 .{ .cpu = .{ .arm = .{} }, .os = .{ .uefi = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
70 .{ .cpu = .{ .arm = .{} }, .os = .{ .vita = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
71
72 .{ .cpu = .{ .armeb = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
73 .{ .cpu = .{ .armeb = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
74 .{ .cpu = .{ .armeb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
75 .{ .cpu = .{ .armeb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
76 .{ .cpu = .{ .armeb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnueabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
77 .{ .cpu = .{ .armeb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnueabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
78 .{ .cpu = .{ .armeb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
79 .{ .cpu = .{ .armeb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
80 .{ .cpu = .{ .armeb = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
81 .{ .cpu = .{ .armeb = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
82 .{ .cpu = .{ .armeb = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
83 .{ .cpu = .{ .armeb = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
84
85 .{ .cpu = .{ .avr = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
86 .{ .cpu = .{ .avr = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
87
88 .{ .cpu = .{ .bpfeb = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
89
90 .{ .cpu = .{ .bpfel = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
91
92 .{ .cpu = .{ .csky = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
93 .{ .cpu = .{ .csky = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
94 .{ .cpu = .{ .csky = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
95 .{ .cpu = .{ .csky = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
96 .{ .cpu = .{ .csky = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnueabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
97 .{ .cpu = .{ .csky = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnueabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
98
99 .{ .cpu = .{ .hexagon = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
100 .{ .cpu = .{ .hexagon = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
101 .{ .cpu = .{ .hexagon = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
102
103 .{ .cpu = .{ .lanai = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
104
105 .{ .cpu = .{ .loongarch32 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
106 .{ .cpu = .{ .loongarch32 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
107 .{ .cpu = .{ .loongarch32 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnuf32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
108 .{ .cpu = .{ .loongarch32 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnusf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
109 .{ .cpu = .{ .loongarch32 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
110 .{ .cpu = .{ .loongarch32 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .muslf32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
111 .{ .cpu = .{ .loongarch32 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .muslsf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
112 .{ .cpu = .{ .loongarch32 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
113 .{ .cpu = .{ .loongarch32 = .{} }, .os = .{ .uefi = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
114
115 .{ .cpu = .{ .loongarch64 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
116 .{ .cpu = .{ .loongarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
117 .{ .cpu = .{ .loongarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnuf32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
118 .{ .cpu = .{ .loongarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnusf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
119 .{ .cpu = .{ .loongarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
120 .{ .cpu = .{ .loongarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .muslf32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
121 .{ .cpu = .{ .loongarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .muslsf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
122 .{ .cpu = .{ .loongarch64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
123 .{ .cpu = .{ .loongarch64 = .{} }, .os = .{ .uefi = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
124
125 .{ .cpu = .{ .m68k = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
126 .{ .cpu = .{ .m68k = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
127 .{ .cpu = .{ .m68k = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
128 .{ .cpu = .{ .m68k = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
129 .{ .cpu = .{ .m68k = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
130 .{ .cpu = .{ .m68k = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
131
132 .{ .cpu = .{ .mips = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
133 .{ .cpu = .{ .mips = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
134 .{ .cpu = .{ .mips = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
135 .{ .cpu = .{ .mips = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
136 .{ .cpu = .{ .mips = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnueabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
137 .{ .cpu = .{ .mips = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnueabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
138 .{ .cpu = .{ .mips = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
139 .{ .cpu = .{ .mips = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
140 .{ .cpu = .{ .mips = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
141 .{ .cpu = .{ .mips = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
142 .{ .cpu = .{ .mips = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
143 .{ .cpu = .{ .mips = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
144
145 .{ .cpu = .{ .mipsel = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
146 .{ .cpu = .{ .mipsel = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
147 .{ .cpu = .{ .mipsel = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
148 .{ .cpu = .{ .mipsel = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
149 .{ .cpu = .{ .mipsel = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnueabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
150 .{ .cpu = .{ .mipsel = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnueabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
151 .{ .cpu = .{ .mipsel = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
152 .{ .cpu = .{ .mipsel = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
153 .{ .cpu = .{ .mipsel = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
154 .{ .cpu = .{ .mipsel = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
155 .{ .cpu = .{ .mipsel = .{} }, .os = .{ .psx = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
156 .{ .cpu = .{ .mipsel = .{} }, .os = .{ .psp = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
157 .{ .cpu = .{ .mipsel = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
158 .{ .cpu = .{ .mipsel = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
159
160 .{ .cpu = .{ .mips64 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
161 .{ .cpu = .{ .mips64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .abin32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
162 .{ .cpu = .{ .mips64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnuabi64 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
163 .{ .cpu = .{ .mips64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnuabin32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
164 .{ .cpu = .{ .mips64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .muslabi64 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
165 .{ .cpu = .{ .mips64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .muslabin32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
166 .{ .cpu = .{ .mips64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
167 .{ .cpu = .{ .mips64 = .{} }, .os = .{ .openbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
168
169 .{ .cpu = .{ .mips64el = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
170 .{ .cpu = .{ .mips64el = .{} }, .os = .{ .linux = .{} }, .abi = .{ .abin32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
171 .{ .cpu = .{ .mips64el = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnuabi64 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
172 .{ .cpu = .{ .mips64el = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnuabin32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
173 .{ .cpu = .{ .mips64el = .{} }, .os = .{ .linux = .{} }, .abi = .{ .muslabi64 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
174 .{ .cpu = .{ .mips64el = .{} }, .os = .{ .linux = .{} }, .abi = .{ .muslabin32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
175 .{ .cpu = .{ .mips64el = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
176 .{ .cpu = .{ .mips64el = .{} }, .os = .{ .openbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
177
178 .{ .cpu = .{ .msp430 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
179
180 .{ .cpu = .{ .nvptx = .{} }, .os = .{ .cuda = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
181 .{ .cpu = .{ .nvptx = .{} }, .os = .{ .nvcl = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
182
183 .{ .cpu = .{ .nvptx64 = .{} }, .os = .{ .cuda = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
184 .{ .cpu = .{ .nvptx64 = .{} }, .os = .{ .nvcl = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
185
186 .{ .cpu = .{ .powerpc = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
187 .{ .cpu = .{ .powerpc = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
188 .{ .cpu = .{ .powerpc = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
189 .{ .cpu = .{ .powerpc = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
190 .{ .cpu = .{ .powerpc = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
191 .{ .cpu = .{ .powerpc = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
192 .{ .cpu = .{ .powerpc = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
193 .{ .cpu = .{ .powerpc = .{} }, .os = .{ .openbsd = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
194 .{ .cpu = .{ .powerpc = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
195 .{ .cpu = .{ .powerpc = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
196 .{ .cpu = .{ .powerpc = .{} }, .os = .{ .wiiu = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
197
198 .{ .cpu = .{ .powerpcle = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
199 .{ .cpu = .{ .powerpcle = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
200
201 .{ .cpu = .{ .powerpc64 = .{} }, .os = .{ .freebsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
202 .{ .cpu = .{ .powerpc64 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
203 .{ .cpu = .{ .powerpc64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
204 .{ .cpu = .{ .powerpc64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
205 .{ .cpu = .{ .powerpc64 = .{} }, .os = .{ .openbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
206 .{ .cpu = .{ .powerpc64 = .{} }, .os = .{ .ps3 = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
207 .{ .cpu = .{ .powerpc64 = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
208
209 .{ .cpu = .{ .powerpc64le = .{} }, .os = .{ .freebsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
210 .{ .cpu = .{ .powerpc64le = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
211 .{ .cpu = .{ .powerpc64le = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
212 .{ .cpu = .{ .powerpc64le = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
213 .{ .cpu = .{ .powerpc64le = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
214
215 .{ .cpu = .{ .riscv32 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
216 .{ .cpu = .{ .riscv32 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
217 .{ .cpu = .{ .riscv32 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
218 .{ .cpu = .{ .riscv32 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
219 .{ .cpu = .{ .riscv32 = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
220 .{ .cpu = .{ .riscv32 = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
221 .{ .cpu = .{ .riscv32 = .{} }, .os = .{ .uefi = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
222
223 .{ .cpu = .{ .riscv32be = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
224
225 .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .freebsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
226 .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
227 .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .fuchsia = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
228 .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .haiku = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
229 .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .hurd = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
230 .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .android = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
231 .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
232 .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
233 .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
234 .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
235 .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .openbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
236 .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
237 .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .serenity = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
238 .{ .cpu = .{ .riscv64 = .{} }, .os = .{ .uefi = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
239
240 .{ .cpu = .{ .riscv64be = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
241
242 .{ .cpu = .{ .s390x = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
243 .{ .cpu = .{ .s390x = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
244 .{ .cpu = .{ .s390x = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
245 .{ .cpu = .{ .s390x = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
246
247 .{ .cpu = .{ .sparc = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
248 .{ .cpu = .{ .sparc = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
249 .{ .cpu = .{ .sparc = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
250 .{ .cpu = .{ .sparc = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
251 .{ .cpu = .{ .sparc = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
252
253 .{ .cpu = .{ .sparc64 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .new, .pic = .pic },
254 .{ .cpu = .{ .sparc64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .new, .pic = .pic },
255 .{ .cpu = .{ .sparc64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .new, .pic = .pic },
256 .{ .cpu = .{ .sparc64 = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .new, .pic = .pic },
257 .{ .cpu = .{ .sparc64 = .{} }, .os = .{ .openbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .new, .pic = .pic },
258 .{ .cpu = .{ .sparc64 = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .new, .pic = .pic },
259
260 .{ .cpu = .{ .spirv32 = .{} }, .os = .{ .opencl = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
261 .{ .cpu = .{ .spirv32 = .{} }, .os = .{ .opengl = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
262 .{ .cpu = .{ .spirv32 = .{} }, .os = .{ .vulkan = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
263
264 .{ .cpu = .{ .spirv64 = .{} }, .os = .{ .amdhsa = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
265 .{ .cpu = .{ .spirv64 = .{} }, .os = .{ .opencl = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
266 .{ .cpu = .{ .spirv64 = .{} }, .os = .{ .vulkan = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
267
268 .{ .cpu = .{ .thumb = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
269 .{ .cpu = .{ .thumb = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
270 .{ .cpu = .{ .thumb = .{} }, .os = .{ .fuchsia = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
271 .{ .cpu = .{ .thumb = .{} }, .os = .{ .gba = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
272 .{ .cpu = .{ .thumb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
273 .{ .cpu = .{ .thumb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
274 .{ .cpu = .{ .thumb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
275 .{ .cpu = .{ .thumb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
276 .{ .cpu = .{ .thumb = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
277 .{ .cpu = .{ .thumb = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
278 .{ .cpu = .{ .thumb = .{} }, .os = .{ .vita = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
279 .{ .cpu = .{ .thumb = .{} }, .os = .{ .windows = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
280 .{ .cpu = .{ .thumb = .{} }, .os = .{ .windows = .{} }, .abi = .{ .itanium = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
281 .{ .cpu = .{ .thumb = .{} }, .os = .{ .windows = .{} }, .abi = .{ .msvc = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
282
283 .{ .cpu = .{ .thumbeb = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
284 .{ .cpu = .{ .thumbeb = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
285 .{ .cpu = .{ .thumbeb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
286 .{ .cpu = .{ .thumbeb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
287 .{ .cpu = .{ .thumbeb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
288 .{ .cpu = .{ .thumbeb = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musleabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
289 .{ .cpu = .{ .thumbeb = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabi = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
290 .{ .cpu = .{ .thumbeb = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .eabihf = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
291
292 .{ .cpu = .{ .ve = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
293 .{ .cpu = .{ .ve = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
294
295 .{ .cpu = .{ .wasm32 = .{} }, .os = .{ .emscripten = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
296 .{ .cpu = .{ .wasm32 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
297 .{ .cpu = .{ .wasm32 = .{} }, .os = .{ .wasi = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
298
299 .{ .cpu = .{ .wasm64 = .{} }, .os = .{ .emscripten = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
300 .{ .cpu = .{ .wasm64 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
301 .{ .cpu = .{ .wasm64 = .{} }, .os = .{ .wasi = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
302
303 .{ .cpu = .{ .x86 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
304 .{ .cpu = .{ .x86 = .{} }, .os = .{ .haiku = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
305 .{ .cpu = .{ .x86 = .{} }, .os = .{ .hurd = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
306 .{ .cpu = .{ .x86 = .{} }, .os = .{ .illumos = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
307 .{ .cpu = .{ .x86 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .android = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
308 .{ .cpu = .{ .x86 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
309 .{ .cpu = .{ .x86 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
310 .{ .cpu = .{ .x86 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
311 .{ .cpu = .{ .x86 = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
312 .{ .cpu = .{ .x86 = .{} }, .os = .{ .openbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
313 .{ .cpu = .{ .x86 = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
314 .{ .cpu = .{ .x86 = .{} }, .os = .{ .uefi = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
315 .{ .cpu = .{ .x86 = .{} }, .os = .{ .windows = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
316 .{ .cpu = .{ .x86 = .{} }, .os = .{ .windows = .{} }, .abi = .{ .itanium = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
317 .{ .cpu = .{ .x86 = .{} }, .os = .{ .windows = .{} }, .abi = .{ .msvc = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
318
319 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .freebsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .new, .pic = .pic },
320 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .new, .pic = .pic },
321 .{ .cpu = .{ .x86_64 = .{ .features = .{ .add = .{.soft_float}, .remove = .{ .mmx, .sse, .sse2, .avx, .avx2 } } } }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .new, .pic = .pic },
322 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .fuchsia = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .new, .pic = .pic },
323 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .dragonfly = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .new, .pic = .pic },
324 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .driverkit = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic },
325 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .haiku = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .new, .pic = .pic },
326 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .hurd = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .new, .pic = .pic },
327 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .illumos = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .new, .pic = .pic },
328 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .android = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .new, .pic = .pic },
329 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .new, .pic = .pic },
330 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .gnux32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .new, .pic = .pic },
331 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .musl = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .new, .pic = .pic },
332 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .muslx32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .new, .pic = .pic },
333 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .new, .pic = .pic },
334 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .ohos = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .new, .pic = .pic },
335 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .linux = .{} }, .abi = .{ .x32 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .new, .pic = .pic },
336 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .maccatalyst = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic },
337 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .macos = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .old, .pic = .pic },
338 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .netbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .new, .pic = .pic },
339 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .openbsd = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .new, .pic = .pic },
340 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .ps4 = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .new, .pic = .pic },
341 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .ps5 = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .new, .pic = .pic },
342 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .rtems = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .new, .pic = .pic },
343 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .serenity = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .new, .pic = .pic },
344 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .uefi = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
345 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .windows = .{} }, .abi = .{ .gnu = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
346 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .windows = .{} }, .abi = .{ .itanium = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
347 .{ .cpu = .{ .x86_64 = .{} }, .os = .{ .windows = .{} }, .abi = .{ .msvc = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
348
349 .{ .cpu = .{ .xcore = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
350
351 .{ .cpu = .{ .xtensa = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .call0 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
352 .{ .cpu = .{ .xtensa = .{} }, .os = .{ .freestanding = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
353 .{ .cpu = .{ .xtensa = .{} }, .os = .{ .linux = .{} }, .abi = .{ .call0 = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
354 .{ .cpu = .{ .xtensa = .{} }, .os = .{ .linux = .{} }, .abi = .{ .none = .{} }, .cache_mode = .whole, .backend = .llvm, .linker = .lld, .pic = .pic },
355}
test/llvm/nonnull created+44
......@@ -0,0 +1,44 @@
1#skip amdgcn-amdhsa-none-baseline-whole-llvm-lld-pic
2#skip amdgcn-amdpal-none-baseline-whole-llvm-lld-pic
3#skip amdgcn-mesa3d-none-baseline-whole-llvm-lld-pic
4
5#skip nvptx-cuda-none-baseline-whole-llvm-lld-pic
6#skip nvptx-nvcl-none-baseline-whole-llvm-lld-pic
7
8#skip nvptx64-cuda-none-baseline-whole-llvm-lld-pic
9#skip nvptx64-nvcl-none-baseline-whole-llvm-lld-pic
10
11#skip x86_64-linux-gnux32-baseline-whole-llvm-new-pic
12#skip x86_64-linux-muslx32-baseline-whole-llvm-new-pic
13#skip x86_64-linux-x32-baseline-whole-llvm-new-pic
14
15#obj {
16--name test -fno-lld -fno-new-linker -ofmt=llvmir
17-Mroot=test.zig
18#}
19
20#write test.zig {
21export fn entry(ptr: *i16) i16 {
22 return ptr.*;
23}
24#}
25#update "store"
26#check llvm {
27define #...@test.entry(ptr #...nonnull #...%0) #...{
28#...load i16, ptr %0#...
29}
30
31#}
32
33#write test.zig {
34export fn entry(ptr: *i16) void {
35 ptr.* = 42;
36}
37#}
38#update "load"
39#check llvm {
40define #...@test.entry(ptr #...nonnull #...%0) #...{
41#...store i16 42, ptr %0#...
42}
43
44#}
test/llvm/unused_load created+109
......@@ -0,0 +1,109 @@
1#skip amdgcn-amdhsa-none-baseline-whole-llvm-lld-pic
2#skip amdgcn-amdpal-none-baseline-whole-llvm-lld-pic
3#skip amdgcn-mesa3d-none-baseline-whole-llvm-lld-pic
4
5#skip nvptx-cuda-none-baseline-whole-llvm-lld-pic
6#skip nvptx-nvcl-none-baseline-whole-llvm-lld-pic
7
8#skip nvptx64-cuda-none-baseline-whole-llvm-lld-pic
9#skip nvptx64-nvcl-none-baseline-whole-llvm-lld-pic
10
11#skip spirv32-opencl-none-baseline-whole-llvm-lld-pic
12#skip spirv32-opengl-none-baseline-whole-llvm-lld-pic
13#skip spirv32-vulkan-none-baseline-whole-llvm-lld-pic
14
15#skip spirv64-amdhsa-none-baseline-whole-llvm-lld-pic
16#skip spirv64-opencl-none-baseline-whole-llvm-lld-pic
17#skip spirv64-vulkan-none-baseline-whole-llvm-lld-pic
18
19#skip wasm32-emscripten-none-baseline-whole-llvm-lld-pic
20#skip wasm32-freestanding-none-baseline-whole-llvm-lld-pic
21#skip wasm32-wasi-none-baseline-whole-llvm-lld-pic
22
23#skip wasm64-emscripten-none-baseline-whole-llvm-lld-pic
24#skip wasm64-freestanding-none-baseline-whole-llvm-lld-pic
25#skip wasm64-wasi-none-baseline-whole-llvm-lld-pic
26
27#skip x86_64-linux-gnux32-baseline-whole-llvm-new-pic
28#skip x86_64-linux-muslx32-baseline-whole-llvm-new-pic
29#skip x86_64-linux-x32-baseline-whole-llvm-new-pic
30
31#obj {
32--name test -fno-lld -fno-new-linker -ofmt=llvmir
33-Mroot=test.zig
34#}
35
36#write test.zig {
37export fn entry(ptr: *i16) void {
38 _ = @atomicLoad(i16, ptr, .acquire);
39}
40#}
41#update "atomic acquire"
42#check llvm {
43define #...@test.entry(ptr #...%0) #...{
44#...load atomic i16, ptr %0 acquire#...
45}
46
47#}
48
49#write test.zig {
50export fn entry(ptr: *volatile i16) void {
51 _ = @atomicLoad(i16, ptr, .unordered);
52}
53#}
54#update "atomic volatile unordered"
55#check llvm {
56define #...@test.entry(ptr #...%0) #...{
57#...load atomic volatile i16, ptr %0 unordered#...
58}
59
60#}
61
62#write test.zig {
63export fn entry(ptr: *volatile i16) void {
64 _ = ptr.*;
65}
66#}
67#update "volatile"
68#check llvm {
69define #...@test.entry(ptr #...%0) #...{
70#...load volatile i16, ptr %0#...
71}
72
73#}
74
75#write test.zig {
76export fn entry(ptr: *volatile i16) void {
77 entry2(ptr[0..1]);
78}
79fn entry2(slice: []volatile i16) void {
80 @setRuntimeSafety(false);
81 _ = slice[0];
82}
83#}
84#update "volatile slice"
85#check llvm {
86define #...@test.entry(#...) #...{
87#...
88}
89
90#...
91define #...@test.entry2(#...) #...{
92#...load volatile i16, ptr %#...
93}
94
95#}
96
97#write test.zig {
98const S = packed struct(u16) { a: u2, b: u8, c: u6 };
99export fn entry(ptr: *volatile S) void {
100 _ = ptr.b;
101}
102#}
103#update "volatile packed"
104#check llvm {
105define #...@test.entry(ptr #...%0) #...{
106#...load volatile i16, ptr %#...
107}
108
109#}