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 {...@@ -816,13 +816,9 @@ pub fn build(b: *std.Build) !void {
816 try tests.addRunnerTests(b, runner, test_incremental_step, "test/incremental", @import("test/incremental/matrix.zon"), runner_opts);816 try tests.addRunnerTests(b, runner, test_incremental_step, "test/incremental", @import("test/incremental/matrix.zon"), runner_opts);
817 test_step.dependOn(test_incremental_step);817 test_step.dependOn(test_incremental_step);
818818
819 const test_llvm_ir_step = b.step("test-llvm-ir", "Run the LLVM IR tests");819 const test_llvm_step = b.step("test-llvm", "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);820 try tests.addRunnerTests(b, runner, test_llvm_step, "test/llvm", @import("test/llvm/matrix.zon"), runner_opts);
821 test_step.dependOn(test_llvm_ir_step);821 test_step.dependOn(test_llvm_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);
826}822}
827823
828fn addWasiUpdateStep(b: *std.Build, version: [:0]const u8) !void {824fn addWasiUpdateStep(b: *std.Build, version: [:0]const u8) !void {
lib/compiler/Maker/Step/Run.zig+7-1
...@@ -795,6 +795,7 @@ fn waitZigTest(...@@ -795,6 +795,7 @@ fn waitZigTest(
795 multi_reader: *Io.File.MultiReader,795 multi_reader: *Io.File.MultiReader,
796 opt_metadata: *?TestMetadata,796 opt_metadata: *?TestMetadata,
797 results: *Step.TestResults,797 results: *Step.TestResults,
798 eb_wip: *std.zig.ErrorBundle.Wip,
798) !union(enum) {799) !union(enum) {
799 write_failed: anyerror,800 write_failed: anyerror,
800 no_poll: struct {801 no_poll: struct {
...@@ -885,7 +886,7 @@ fn waitZigTest(...@@ -885,7 +886,7 @@ fn waitZigTest(
885 .{ builtin.zig_version_string, body },886 .{ builtin.zig_version_string, body },
886 );887 );
887 },888 },
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)),
889 .test_metadata => {890 .test_metadata => {
890 // `metadata` would only be populated if we'd already seen a `test_metadata`, but we891 // `metadata` would only be populated if we'd already seen a `test_metadata`, but we
891 // only request it once (and importantly, we don't re-request it if we kill and892 // only request it once (and importantly, we don't re-request it if we kill and
...@@ -1573,6 +1574,9 @@ fn evalZigTest(...@@ -1573,6 +1574,9 @@ fn evalZigTest(
1573 };1574 };
1574 var test_metadata: ?TestMetadata = null;1575 var test_metadata: ?TestMetadata = null;
15751576
1577 var eb_wip: std.zig.ErrorBundle.Wip = try .init(gpa);
1578 defer eb_wip.deinit();
1579
1576 while (true) {1580 while (true) {
1577 var child = try process.spawn(io, spawn_options);1581 var child = try process.spawn(io, spawn_options);
1578 var multi_reader_buffer: Io.File.MultiReader.Buffer(2) = undefined;1582 var multi_reader_buffer: Io.File.MultiReader.Buffer(2) = undefined;
...@@ -1602,6 +1606,7 @@ fn evalZigTest(...@@ -1602,6 +1606,7 @@ fn evalZigTest(
1602 &multi_reader,1606 &multi_reader,
1603 &test_metadata,1607 &test_metadata,
1604 &test_results,1608 &test_results,
1609 &eb_wip,
1605 )) {1610 )) {
1606 .write_failed => |err| {1611 .write_failed => |err| {
1607 // The runner unexpectedly closed a stdio pipe, which means a crash. Make sure we've captured1612 // The runner unexpectedly closed a stdio pipe, which means a crash. Make sure we've captured
...@@ -1687,6 +1692,7 @@ fn evalZigTest(...@@ -1687,6 +1692,7 @@ fn evalZigTest(
1687 }1692 }
1688 }1693 }
1689 }1694 }
1695 step.result_error_bundle = try eb_wip.toOwnedBundle("");
1690 return;1696 return;
1691 },1697 },
1692 .timeout => |timeout| {1698 .timeout => |timeout| {
src/main.zig+1-1
...@@ -3368,7 +3368,7 @@ fn buildOutputType(...@@ -3368,7 +3368,7 @@ fn buildOutputType(
3368 const target = &main_mod.resolved_target.result;3368 const target = &main_mod.resolved_target.result;
33693369
3370 if (target.cpu.arch == .arc or target.cpu.arch.isNvptx()) {3370 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) {
3372 fatal("cannot emit {s} binary with the LLVM backend; only '-femit-asm' is supported", .{3372 fatal("cannot emit {s} binary with the LLVM backend; only '-femit-asm' is supported", .{
3373 @tagName(target.cpu.arch),3373 @tagName(target.cpu.arch),
3374 });3374 });
test/Runner.zig+146-99
...@@ -17,7 +17,7 @@ pub const Target = struct {...@@ -17,7 +17,7 @@ pub const Target = struct {
17 dynamic_linker: DynamicLinker = .default,17 dynamic_linker: DynamicLinker = .default,
1818
19 cache_mode: enum { whole, incremental },19 cache_mode: enum { whole, incremental },
20 backend: enum { selfhosted, llvm, llvmir, cbe },20 backend: enum { selfhosted, llvm, cbe },
21 linker: enum { lld, old, new },21 linker: enum { lld, old, new },
22 pic: enum { nopic, pic, pie },22 pic: enum { nopic, pic, pie },
2323
...@@ -942,6 +942,7 @@ fn testOne(runner: *Runner, test_index: u32) (error{ServerWriteFailed} || TestEr...@@ -942,6 +942,7 @@ fn testOne(runner: *Runner, test_index: u32) (error{ServerWriteFailed} || TestEr
942 };942 };
943 defer {943 defer {
944 update.manifest_sr.deinit();944 update.manifest_sr.deinit();
945 if (update.compiler) |*comp| comp.deinit();
945 update.src_dir.close(runner.io);946 update.src_dir.close(runner.io);
946 update.prog_node.end();947 update.prog_node.end();
947 }948 }
...@@ -1161,11 +1162,12 @@ fn handleCommand(...@@ -1161,11 +1162,12 @@ fn handleCommand(
1161 const triple_cpu = component_it.rest();1162 const triple_cpu = component_it.rest();
1162 var triple_len: usize = 0;1163 var triple_len: usize = 0;
1163 for (0..3) |_| {1164 for (0..3) |_| {
1165 const component_start = triple_len;
1164 triple_len = if (std.mem.findScalarPos(u8, triple_cpu, triple_len, '-')) |dash_pos|1166 triple_len = if (std.mem.findScalarPos(u8, triple_cpu, triple_len, '-')) |dash_pos|
1165 dash_pos + 11167 dash_pos + 1
1166 else1168 else
1167 return update.fail("target {q} missing cpu", .{update.target_query});1169 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;
1169 }1171 }
1170 const triple = triple_cpu[0 .. triple_len - 1];1172 const triple = triple_cpu[0 .. triple_len - 1];
1171 const cpu = triple_cpu[triple_len..];1173 const cpu = triple_cpu[triple_len..];
...@@ -1179,7 +1181,6 @@ fn handleCommand(...@@ -1179,7 +1181,6 @@ fn handleCommand(
1179 .cpu_features = cpu,1181 .cpu_features = cpu,
1180 .object_format = switch (backend) {1182 .object_format = switch (backend) {
1181 .sema, .selfhosted, .llvm => null,1183 .sema, .selfhosted, .llvm => null,
1182 .llvmir => "llvmir",
1183 .cbe => "c",1184 .cbe => "c",
1184 },1185 },
1185 .diagnostics = &query_parse_diags,1186 .diagnostics = &query_parse_diags,
...@@ -1393,7 +1394,6 @@ fn handleCommand(...@@ -1393,7 +1394,6 @@ fn handleCommand(
1393 } else return update.fail("unexpected stderr:\n{s}", .{stderr_buffered});1394 } else return update.fail("unexpected stderr:\n{s}", .{stderr_buffered});
1394 }1395 }
13951396
1396 try comp.exit();
1397 return update.fail("compiler failed to send terminating error_bundle", .{});1397 return update.fail("compiler failed to send terminating error_bundle", .{});
1398 },1398 },
1399 }1399 }
...@@ -1417,9 +1417,27 @@ fn spawnCompiler(...@@ -1417,9 +1417,27 @@ fn spawnCompiler(
1417 const gpa = runner.gpa;1417 const gpa = runner.gpa;
1418 const arena = runner.arena.allocator();1418 const arena = runner.arena.allocator();
1419 if (compiler.*) |*comp| {1419 if (compiler.*) |*comp| {
1420 try comp.exit();1420 comp.deinit();
1421 compiler.* = null;1421 compiler.* = null;
1422 }1422 }
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
1424 var argv: std.ArrayList([]const u8) = .empty;1442 var argv: std.ArrayList([]const u8) = .empty;
1425 defer argv.deinit(gpa);1443 defer argv.deinit(gpa);
...@@ -1431,20 +1449,19 @@ fn spawnCompiler(...@@ -1431,20 +1449,19 @@ fn spawnCompiler(
1431 .Lib => "build-lib",1449 .Lib => "build-lib",
1432 },1450 },
1433 "-target",1451 "-target",
1434 target.triple,1452 comp.target.triple,
1435 "--cache-dir",1453 "--cache-dir",
1436 ".zig-cache",1454 ".zig-cache",
1437 });1455 });
1438 switch (target.cache_mode) {1456 switch (comp.target.cache_mode) {
1439 .whole => {},1457 .whole => {},
1440 .incremental => try argv.append(gpa, "-fincremental"),1458 .incremental => try argv.append(gpa, "-fincremental"),
1441 }1459 }
1442 var path_buffer: [std.Io.Dir.max_path_bytes]u8 = undefined;1460 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) {
1444 .sema => try argv.append(gpa, "-fno-emit-bin"),1462 .sema => try argv.append(gpa, "-fno-emit-bin"),
1445 .selfhosted => try argv.append(gpa, "-fno-llvm"),1463 .selfhosted => try argv.append(gpa, "-fno-llvm"),
1446 .llvm => try argv.append(gpa, "-fllvm"),1464 .llvm => try argv.append(gpa, "-fllvm"),
1447 .llvmir => try argv.append(gpa, "-ofmt=llvmir"),
1448 .cbe => try argv.append(gpa, "-ofmt=c"),1465 .cbe => try argv.append(gpa, "-ofmt=c"),
1449 } else try argv.appendSlice(gpa, &.{ "-I", path_buffer[0 .. (runner.args.lib_dir orelse1466 } else try argv.appendSlice(gpa, &.{ "-I", path_buffer[0 .. (runner.args.lib_dir orelse
1450 return runner.fail("\"--lib=path/to/lib\" arg required with cbe", .{}))1467 return runner.fail("\"--lib=path/to/lib\" arg required with cbe", .{}))
...@@ -1452,12 +1469,12 @@ fn spawnCompiler(...@@ -1452,12 +1469,12 @@ fn spawnCompiler(
1452 error.Canceled => |e| return e,1469 error.Canceled => |e| return e,
1453 else => |e| return runner.fail("unable to get lib path: {t}", .{e}),1470 else => |e| return runner.fail("unable to get lib path: {t}", .{e}),
1454 }] });1471 }] });
1455 switch (target.linker) {1472 switch (comp.target.linker) {
1456 .lld => try argv.appendSlice(gpa, &.{ "-flld", "-fno-new-linker" }),1473 .lld => try argv.appendSlice(gpa, &.{ "-flld", "-fno-new-linker" }),
1457 .old => try argv.appendSlice(gpa, &.{ "-fno-lld", "-fno-new-linker" }),1474 .old => try argv.appendSlice(gpa, &.{ "-fno-lld", "-fno-new-linker" }),
1458 .new => try argv.appendSlice(gpa, &.{ "-fno-lld", "-fnew-linker" }),1475 .new => try argv.appendSlice(gpa, &.{ "-fno-lld", "-fnew-linker" }),
1459 }1476 }
1460 switch (target.pic) {1477 switch (comp.target.pic) {
1461 .nopic => try argv.appendSlice(gpa, &.{ "-fno-PIC", "-fno-PIE" }),1478 .nopic => try argv.appendSlice(gpa, &.{ "-fno-PIC", "-fno-PIE" }),
1462 .pic => try argv.appendSlice(gpa, &.{ "-fPIC", "-fno-PIE" }),1479 .pic => try argv.appendSlice(gpa, &.{ "-fPIC", "-fno-PIE" }),
1463 .pie => try argv.appendSlice(gpa, &.{ "-fPIC", "-fPIE" }),1480 .pie => try argv.appendSlice(gpa, &.{ "-fPIC", "-fPIE" }),
...@@ -1466,6 +1483,7 @@ fn spawnCompiler(...@@ -1466,6 +1483,7 @@ fn spawnCompiler(
1466 var need: usize = 1;1483 var need: usize = 1;
1467 var state: enum { positional, @"--name" } = .positional;1484 var state: enum { positional, @"--name" } = .positional;
1468 var root_name: ?[]const u8 = null;1485 var root_name: ?[]const u8 = null;
1486 var emit: ?std.zig.EmitArtifact = .bin;
1469 while (true) {1487 while (true) {
1470 const done = if (args_r.fill(need)) false else |err| switch (err) {1488 const done = if (args_r.fill(need)) false else |err| switch (err) {
1471 error.ReadFailed => |e| return e,1489 error.ReadFailed => |e| return e,
...@@ -1479,10 +1497,42 @@ fn spawnCompiler(...@@ -1479,10 +1497,42 @@ fn spawnCompiler(
1479 switch (state) {1497 switch (state) {
1480 .positional => if (std.mem.eql(u8, arg, "--name")) {1498 .positional => if (std.mem.eql(u8, arg, "--name")) {
1481 state = .@"--name";1499 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});
1482 } else if (std.mem.cutPrefix(u8, arg, "-M")) |module| {1504 } else if (std.mem.cutPrefix(u8, arg, "-M")) |module| {
1483 var module_name_it = std.mem.splitScalar(u8, module, '=');1505 var module_name_it = std.mem.splitScalar(u8, module, '=');
1484 const module_name = module_name_it.next().?;1506 const module_name = module_name_it.next().?;
1485 root_name = root_name orelse module_name;1507 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;
1486 },1536 },
1487 .@"--name" => {1537 .@"--name" => {
1488 root_name = arg;1538 root_name = arg;
...@@ -1500,27 +1550,27 @@ fn spawnCompiler(...@@ -1500,27 +1550,27 @@ fn spawnCompiler(
1500 }1550 }
1501 try argv.append(gpa, "--listen=-");1551 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, .{
1504 .root_name = root_name orelse "root",1554 .root_name = root_name orelse "root",
1505 .cpu_arch = target.resolved.cpu.arch,1555 .cpu_arch = comp.target.resolved.cpu.arch,
1506 .os_tag = target.resolved.os.tag,1556 .os_tag = comp.target.resolved.os.tag,
1507 .ofmt = target.resolved.ofmt,1557 .ofmt = comp.target.resolved.ofmt,
1508 .abi = target.resolved.abi,1558 .abi = comp.target.resolved.abi,
1509 .output_mode = output_mode,1559 .output_mode = output_mode,
1510 });1560 }) else null;
15111561
1512 var name_buffer: [std.Progress.Node.max_name_len]u8 = undefined;1562 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}", .{1563 comp.prog_node = runner.prog_node.start(std.mem.print(&name_buffer, "compile {s}", .{
1514 out_name,1564 comp.emit_name orelse root_name orelse "root",
1515 }) catch &name_buffer, 0);1565 }) 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, .{
1519 .exe = .{ .file = runner.args.zig_exe orelse1569 .exe = .{ .file = runner.args.zig_exe orelse
1520 return runner.fail("missing \"--zig=path/to/zig\" arg", .{}) },1570 return runner.fail("missing \"--zig=path/to/zig\" arg", .{}) },
1521 .argv = argv.items,1571 .argv = argv.items,
1522 .cwd = .{ .dir = src_dir },1572 .cwd = .{ .dir = src_dir },
1523 .progress_node = comp_prog_node,1573 .progress_node = comp.prog_node,
1524 .stdin = .pipe,1574 .stdin = .pipe,
1525 .stdout = .pipe,1575 .stdout = .pipe,
1526 .stderr = .pipe,1576 .stderr = .pipe,
...@@ -1529,31 +1579,14 @@ fn spawnCompiler(...@@ -1529,31 +1579,14 @@ fn spawnCompiler(
1529 error.OperationUnsupported => return error.SkipTest,1579 error.OperationUnsupported => return error.SkipTest,
1530 else => |e| return runner.fail("unable to spawn compiler: {t}", .{e}),1580 else => |e| return runner.fail("unable to spawn compiler: {t}", .{e}),
1531 };1581 };
1532 compiler.* = .{1582 comp.fw = comp.child.stdin.?.writerStreaming(runner.io, &.{});
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, &.{});
1549 comp.mr.init(gpa, runner.io, comp.mr_buffer.toStreams(), &.{1583 comp.mr.init(gpa, runner.io, comp.mr_buffer.toStreams(), &.{
1550 child.stdout.?, child.stderr.?,1584 comp.child.stdout.?, comp.child.stderr.?,
1551 });1585 });
1552 comp.client = .{ .in = comp.mr.reader(0), .out = &comp.fw.interface };1586 comp.client = .{ .in = comp.mr.reader(0), .out = &comp.fw.interface };
1553}1587}
1554const Compiler = struct {1588const Compiler = struct {
1555 runner: *Runner,1589 runner: *Runner,
1556 prog_node: std.Progress.Node,
1557 allow_compiler_stderr: bool,1590 allow_compiler_stderr: bool,
1558 output_mode: std.lang.OutputMode,1591 output_mode: std.lang.OutputMode,
1559 state: enum { idle, update },1592 state: enum { idle, update },
...@@ -1563,7 +1596,8 @@ const Compiler = struct {...@@ -1563,7 +1596,8 @@ const Compiler = struct {
1563 mr: std.Io.File.MultiReader,1596 mr: std.Io.File.MultiReader,
1564 client: std.zig.Client,1597 client: std.zig.Client,
1565 target: Compiler.Target,1598 target: Compiler.Target,
1566 out_name: []const u8,1599 emit_name: ?[]const u8,
1600 prog_node: std.Progress.Node,
1567 config: ?std.zig.Server.Message.Config,1601 config: ?std.zig.Server.Message.Config,
15681602
1569 const Target = struct {1603 const Target = struct {
...@@ -1586,8 +1620,6 @@ const Compiler = struct {...@@ -1586,8 +1620,6 @@ const Compiler = struct {
1586 /// Use the LLVM backend.1620 /// Use the LLVM backend.
1587 /// Corresponds to `-fllvm -flld`.1621 /// Corresponds to `-fllvm -flld`.
1588 llvm,1622 llvm,
1589 /// Use the LLVM backend without libLLVM.
1590 llvmir,
1591 /// Use the C backend. The output is compiled with `zig cc`.1623 /// Use the C backend. The output is compiled with `zig cc`.
1592 /// Corresponds to `-ofmt=c`.1624 /// Corresponds to `-ofmt=c`.
1593 cbe,1625 cbe,
...@@ -1598,6 +1630,12 @@ const Compiler = struct {...@@ -1598,6 +1630,12 @@ const Compiler = struct {
1598 const Pic = enum { nopic, pic, pie };1630 const Pic = enum { nopic, pic, pie };
1599 };1631 };
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
1601 fn receiveMessage(comp: *Compiler) FailError!?struct {1639 fn receiveMessage(comp: *Compiler) FailError!?struct {
1602 tag: std.zig.Server.Message.Tag,1640 tag: std.zig.Server.Message.Tag,
1603 body: []const u8,1641 body: []const u8,
...@@ -1639,6 +1677,11 @@ const Compiler = struct {...@@ -1639,6 +1677,11 @@ const Compiler = struct {
1639 const arena = runner.arena.allocator();1677 const arena = runner.arena.allocator();
1640 const io = runner.io;1678 const io = runner.io;
1641 const target = &comp.target.resolved;1679 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 };
1642 const config = &comp.config.?;1685 const config = &comp.config.?;
1643 var path_buffer: [std.Io.Dir.max_path_bytes]u8 = undefined;1686 var path_buffer: [std.Io.Dir.max_path_bytes]u8 = undefined;
16441687
...@@ -1655,14 +1698,49 @@ const Compiler = struct {...@@ -1655,14 +1698,49 @@ const Compiler = struct {
1655 }),1698 }),
1656 };1699 };
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);
1659 var environ_map: std.process.Environ.Map = .init(gpa);1720 var environ_map: std.process.Environ.Map = .init(gpa);
1660 defer environ_map.deinit();1721 defer environ_map.deinit();
1661 try environ_map.putAll(&runner.environ_map);1722 try environ_map.putAll(&runner.environ_map);
1662 var script_buffer: [512]u8 = undefined;1723 var script_buffer: [512]u8 = undefined;
1663 const script_path, const script_file, var script_fw = script: switch (check) {1724 const script_path, const script_file, var script_fw = script: switch (check) {
1664 .errors => return,1725 .errors => unreachable,
1665 .stdout, .exit, .llvm => .{ undefined, null, undefined },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 },
1666 .gdb => {1744 .gdb => {
1667 const script_path = tmp_dir_path ++ std.Io.Dir.path.sep_str ++ "gdb";1745 const script_path = tmp_dir_path ++ std.Io.Dir.path.sep_str ++ "gdb";
1668 argv.appendSliceAssumeCapacity(&.{ "gdb", "--batch", "--command", script_path, "--args" });1746 argv.appendSliceAssumeCapacity(&.{ "gdb", "--batch", "--command", script_path, "--args" });
...@@ -1721,15 +1799,6 @@ const Compiler = struct {...@@ -1721,15 +1799,6 @@ const Compiler = struct {
1721 };1799 };
1722 defer if (script_file) |file| file.close(io);1800 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
1733 const need_cross_libc =1802 const need_cross_libc =
1734 target.os.tag == .linux and config.flags.link_libc and config.flags.link_mode == .dynamic;1803 target.os.tag == .linux and config.flags.link_libc and config.flags.link_mode == .dynamic;
1735 const use_executor = use_executor: switch (std.zig.system.getExternalExecutor(io, target, .{1804 const use_executor = use_executor: switch (std.zig.system.getExternalExecutor(io, target, .{
...@@ -1796,7 +1865,7 @@ const Compiler = struct {...@@ -1796,7 +1865,7 @@ const Compiler = struct {
1796 break :use_executor true;1865 break :use_executor true;
1797 } else continue :use_executor .bad_os_or_cpu,1866 } else continue :use_executor .bad_os_or_cpu,
1798 };1867 };
1799 argv.appendAssumeCapacity(bin_path);1868 argv.appendAssumeCapacity(emit_path);
18001869
1801 if (!runner.args.quiet) std.log.info("{f}", .{std.zig.SubprocessCommand{1870 if (!runner.args.quiet) std.log.info("{f}", .{std.zig.SubprocessCommand{
1802 .argv = argv.items,1871 .argv = argv.items,
...@@ -1815,41 +1884,19 @@ const Compiler = struct {...@@ -1815,41 +1884,19 @@ const Compiler = struct {
18151884
1816 var name_buffer: [std.Progress.Node.max_name_len]u8 = undefined;1885 var name_buffer: [std.Progress.Node.max_name_len]u8 = undefined;
1817 const run_prog_node = runner.prog_node.start(std.mem.print(&name_buffer, "run {s}", .{1886 const run_prog_node = runner.prog_node.start(std.mem.print(&name_buffer, "run {s}", .{
1818 comp.out_name,1887 emit_name,
1819 }) catch &name_buffer, 0);1888 }) catch &name_buffer, 0);
1820 defer run_prog_node.end();1889 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);
1827 const result = std.process.run(gpa, io, .{1891 const result = std.process.run(gpa, io, .{
1828 .exe = exe: switch (check) {1892 .exe = exe: switch (check) {
1829 .errors => unreachable,1893 .errors, .llvm => unreachable,
1830 .stdout, .exit => if (use_executor) .search else .{ .file = bin_file },1894 .stdout, .exit => if (use_executor) .search else .{ .file = emit_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 },
1848 .gdb, .lldb => {1895 .gdb, .lldb => {
1849 if (use_executor) {1896 if (use_executor) {
1850 if (!runner.args.quiet) std.log.warn(1897 if (!runner.args.quiet) std.log.warn(
1851 "skipping debugging of {q} via executor for foreign target {q}",1898 "skipping debugging of {q} via executor for foreign target {q}",
1852 .{ bin_path, comp.target.triple },1899 .{ emit_path, comp.target.triple },
1853 );1900 );
1854 return;1901 return;
1855 }1902 }
...@@ -1895,7 +1942,7 @@ const Compiler = struct {...@@ -1895,7 +1942,7 @@ const Compiler = struct {
1895 } orelse {1942 } orelse {
1896 if (!runner.args.quiet) std.log.warn(1943 if (!runner.args.quiet) std.log.warn(
1897 "skipping debugging of {q} because of missing \"--{t}=path/to/{[1]t}\" arg",1944 "skipping debugging of {q} because of missing \"--{t}=path/to/{[1]t}\" arg",
1898 .{ bin_path, check },1945 .{ emit_path, check },
1899 );1946 );
1900 return;1947 return;
1901 } };1948 } };
...@@ -1909,11 +1956,11 @@ const Compiler = struct {...@@ -1909,11 +1956,11 @@ const Compiler = struct {
1909 // Chances are the foreign executor isn't available. Skip this evaluation.1956 // Chances are the foreign executor isn't available. Skip this evaluation.
1910 if (!runner.args.quiet) std.log.warn(1957 if (!runner.args.quiet) std.log.warn(
1911 "skipping execution of {q} via executor for foreign target {q}: {t}",1958 "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 },
1913 );1960 );
1914 return;1961 return;
1915 } else return update.fail("unable to run the generated executable {q}: {t}", .{1962 } else return update.fail("unable to run the generated executable {q}: {t}", .{
1916 bin_path, err,1963 emit_path, err,
1917 });1964 });
1918 defer {1965 defer {
1919 gpa.free(result.stdout);1966 gpa.free(result.stdout);
...@@ -1925,7 +1972,7 @@ const Compiler = struct {...@@ -1925,7 +1972,7 @@ const Compiler = struct {
1925 .stdout => {1972 .stdout => {
1926 if (code != 0) return update.fail(1973 if (code != 0) return update.fail(
1927 "generated executable {q} failed with code {d}",1974 "generated executable {q} failed with code {d}",
1928 .{ bin_path, code },1975 .{ emit_path, code },
1929 );1976 );
1930 std.testing.expectEqualStrings(1977 std.testing.expectEqualStrings(
1931 expected,1978 expected,
...@@ -1953,27 +2000,27 @@ const Compiler = struct {...@@ -1953,27 +2000,27 @@ const Compiler = struct {
1953 .gdb, .lldb => {2000 .gdb, .lldb => {
1954 if (code != debug_success) return update.fail(2001 if (code != debug_success) return update.fail(
1955 "debugging {q} failed with code {d}",2002 "debugging {q} failed with code {d}",
1956 .{ bin_path, code },2003 .{ emit_path, code },
1957 );2004 );
1958 try update.checkMatches("stdout", expected, result.stdout);2005 try update.checkMatches("stdout", expected, result.stdout);
1959 },2006 },
1960 },2007 },
1961 .signal => |sig| return update.fail(2008 .signal => |sig| return update.fail(
1962 "generated executable {q} terminated with signal {t}",2009 "generated executable {q} terminated with signal {t}",
1963 .{ bin_path, sig },2010 .{ emit_path, sig },
1964 ),2011 ),
1965 .stopped => |sig| return update.fail(2012 .stopped => |sig| return update.fail(
1966 "generated executable {q} stopped with signal {t}",2013 "generated executable {q} stopped with signal {t}",
1967 .{ bin_path, sig },2014 .{ emit_path, sig },
1968 ),2015 ),
1969 .unknown => return update.fail(2016 .unknown => return update.fail(
1970 "generated executable {q} terminated unexpectedly",2017 "generated executable {q} terminated unexpectedly",
1971 .{bin_path},2018 .{emit_path},
1972 ),2019 ),
1973 }2020 }
1974 if (!use_executor and result.stderr.len > 0) {2021 if (!use_executor and result.stderr.len > 0) {
1975 std.log.err("#update {q} generated executable {q} had unexpected stderr:\n{s}", .{2022 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,
1977 });2024 });
1978 }2025 }
1979 }2026 }
...@@ -1999,6 +2046,7 @@ const Compiler = struct {...@@ -1999,6 +2046,7 @@ const Compiler = struct {
1999 error.ReadFailed => unreachable, // .fixed2046 error.ReadFailed => unreachable, // .fixed
2000 };2047 };
2001 const comp = &compiler.?;2048 const comp = &compiler.?;
2049 defer comp.deinit();
2002 comp.client.serveBodylessMessage(.update) catch |err| switch (err) {2050 comp.client.serveBodylessMessage(.update) catch |err| switch (err) {
2003 error.WriteFailed => switch (comp.fw.err.?) {2051 error.WriteFailed => switch (comp.fw.err.?) {
2004 error.Canceled => |e| return e,2052 error.Canceled => |e| return e,
...@@ -2006,7 +2054,7 @@ const Compiler = struct {...@@ -2006,7 +2054,7 @@ const Compiler = struct {
2006 },2054 },
2007 };2055 };
2008 comp.state = .update;2056 comp.state = .update;
2009 var out_path: ?[]const u8 = null;2057 var emit_path: ?[]const u8 = null;
2010 while (try comp.receiveMessage()) |message| switch (message.tag) {2058 while (try comp.receiveMessage()) |message| switch (message.tag) {
2011 else => {}, // Ignore other messages,2059 else => {}, // Ignore other messages,
2012 .config => {2060 .config => {
...@@ -2019,9 +2067,9 @@ const Compiler = struct {...@@ -2019,9 +2067,9 @@ const Compiler = struct {
2019 _ = body_r.takeStruct(std.zig.Server.Message.EmitDigest, .little) catch unreachable;2067 _ = body_r.takeStruct(std.zig.Server.Message.EmitDigest, .little) catch unreachable;
2020 const digest = body_r.takeArray(std.Build.Cache.bin_digest_len) catch unreachable;2068 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 ++
2023 "o" ++ std.Io.Dir.path.sep_str ++ std.Build.Cache.binToHex(digest.*);2071 "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.? });
2025 },2073 },
2026 .error_bundle => {2074 .error_bundle => {
2027 const eb = std.zig.Server.allocErrorBundle(2075 const eb = std.zig.Server.allocErrorBundle(
...@@ -2040,7 +2088,7 @@ const Compiler = struct {...@@ -2040,7 +2088,7 @@ const Compiler = struct {
2040 },2088 },
2041 };2089 };
2042 try comp.exit();2090 try comp.exit();
2043 return out_path.?;2091 return emit_path.?;
2044 }2092 }
20452093
2046 fn exit(comp: *Compiler) FailError!void {2094 fn exit(comp: *Compiler) FailError!void {
...@@ -2058,7 +2106,6 @@ const Compiler = struct {...@@ -2058,7 +2106,6 @@ const Compiler = struct {
2058 if (comp.client.in.bufferedLen() > 0) return runner.fail("unable to receive messages", .{});2106 if (comp.client.in.bufferedLen() > 0) return runner.fail("unable to receive messages", .{});
2059 const term = comp.child.wait(runner.io) catch |err|2107 const term = comp.child.wait(runner.io) catch |err|
2060 return runner.fail("child process failed: {t}", .{err});2108 return runner.fail("child process failed: {t}", .{err});
2061 comp.prog_node.end();
2062 switch (term) {2109 switch (term) {
2063 .exited => |code| if (code != 0)2110 .exited => |code| if (code != 0)
2064 return runner.fail("compiler failed with code {d}", .{code}),2111 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...@@ -2309,8 +2356,8 @@ pub fn main(init: std.process.Init) (std.mem.Allocator.Error || std.Io.Cancelabl
2309 };2356 };
2310 }2357 }
23112358
2312 var inherit_dirs: std.ArrayList(std.Io.Dir) = .initBuffer(try arena.alloc(std.Io.Dir, 3));2359 var inherit_dirs: std.ArrayList(std.Io.Dir) = try .initCapacity(arena, 3);
2313 var inherit_files: std.ArrayList(std.Io.File) = .initBuffer(try arena.alloc(std.Io.File, 4));2360 var inherit_files: std.ArrayList(std.Io.File) = try .initCapacity(arena, 4);
2314 inherit_files.appendSliceAssumeCapacity(&.{ args.test_file, args.zig_exe });2361 inherit_files.appendSliceAssumeCapacity(&.{ args.test_file, args.zig_exe });
2315 inherit_dirs.appendSliceAssumeCapacity(&.{ args.lib_dir, args.src_dir });2362 inherit_dirs.appendSliceAssumeCapacity(&.{ args.lib_dir, args.src_dir });
2316 if (args.libc_runtimes_dir) |libc_runtimes_dir| inherit_dirs.appendAssumeCapacity(libc_runtimes_dir);2363 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#}