authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-06-29 08:03:59+02:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2025-06-29 08:03:59+02:00
log6322dbd5bf112356efdf2ec64c5471d6e8586a74
treed6fd887508e79e51e5e142b20099cc6ad29a654b
parent0adcfd60f4fcfd01c74a6477cbcef187ce06f533
parentff06de4c897e0b51c4d1f044746d43397500be69
signaturebadge-check Signed by PGP key B5690EEEBB952194

compiler: test runner: fix tests never fails on crippled architectures (#24180)

* compiler: test runner: fix tests never fails on crippled architectures * riscv64: skip failing tests * riscv64: enable test summary printing

18 files changed, 37 insertions(+), 2 deletions(-)

lib/compiler/test_runner.zig+2-1
...@@ -292,6 +292,7 @@ pub fn mainSimple() anyerror!void {...@@ -292,6 +292,7 @@ pub fn mainSimple() anyerror!void {
292 };292 };
293 // is the backend capable of using std.fmt.format to print a summary at the end?293 // is the backend capable of using std.fmt.format to print a summary at the end?
294 const print_summary = switch (builtin.zig_backend) {294 const print_summary = switch (builtin.zig_backend) {
295 .stage2_riscv64 => true,
295 else => false,296 else => false,
296 };297 };
297298
...@@ -309,7 +310,7 @@ pub fn mainSimple() anyerror!void {...@@ -309,7 +310,7 @@ pub fn mainSimple() anyerror!void {
309 stderr.writeAll("... ") catch {};310 stderr.writeAll("... ") catch {};
310 stderr.writeAll("PASS\n") catch {};311 stderr.writeAll("PASS\n") catch {};
311 }312 }
312 } else |err| if (enable_print) {313 } else |err| {
313 if (enable_print) {314 if (enable_print) {
314 stderr.writeAll(test_fn.name) catch {};315 stderr.writeAll(test_fn.name) catch {};
315 stderr.writeAll("... ") catch {};316 stderr.writeAll("... ") catch {};
test/behavior/align.zig+2
...@@ -409,6 +409,7 @@ test "struct field explicit alignment" {...@@ -409,6 +409,7 @@ test "struct field explicit alignment" {
409 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;409 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
410 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO410 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
411 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; // flaky411 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; // flaky
412 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
412413
413 const S = struct {414 const S = struct {
414 const Node = struct {415 const Node = struct {
...@@ -532,6 +533,7 @@ test "alignment of zero-bit types is respected" {...@@ -532,6 +533,7 @@ test "alignment of zero-bit types is respected" {
532 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;533 if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
533 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;534 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
534 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;535 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
536 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
535537
536 const S = struct { arr: [0]usize = .{} };538 const S = struct { arr: [0]usize = .{} };
537539
test/behavior/atomics.zig+2
...@@ -153,6 +153,7 @@ test "atomic load and rmw with enum" {...@@ -153,6 +153,7 @@ test "atomic load and rmw with enum" {
153 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO153 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
154 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO154 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
155 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;155 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
156 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
156157
157 const Value = enum(u8) { a, b, c };158 const Value = enum(u8) { a, b, c };
158 var x = Value.a;159 var x = Value.a;
...@@ -188,6 +189,7 @@ test "atomicrmw with floats" {...@@ -188,6 +189,7 @@ test "atomicrmw with floats" {
188 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO189 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
189 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO190 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
190 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;191 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
192 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
191193
192 try testAtomicRmwFloat();194 try testAtomicRmwFloat();
193 try comptime testAtomicRmwFloat();195 try comptime testAtomicRmwFloat();
test/behavior/bitcast.zig+1
...@@ -477,6 +477,7 @@ test "@bitCast of packed struct of bools all true" {...@@ -477,6 +477,7 @@ test "@bitCast of packed struct of bools all true" {
477 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO477 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
478 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO478 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
479 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; // TODO479 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; // TODO
480 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
480481
481 const P = packed struct {482 const P = packed struct {
482 b0: bool,483 b0: bool,
test/behavior/cast.zig+2
...@@ -1793,6 +1793,7 @@ test "peer type resolution: array and vector with same child type" {...@@ -1793,6 +1793,7 @@ test "peer type resolution: array and vector with same child type" {
1793 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1793 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1794 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1794 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1795 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1795 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
1796 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
17961797
1797 var arr: [2]u32 = .{ 0, 1 };1798 var arr: [2]u32 = .{ 0, 1 };
1798 var vec: @Vector(2, u32) = .{ 2, 3 };1799 var vec: @Vector(2, u32) = .{ 2, 3 };
...@@ -1931,6 +1932,7 @@ test "peer type resolution: vector and optional vector" {...@@ -1931,6 +1932,7 @@ test "peer type resolution: vector and optional vector" {
1931 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO1932 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1932 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1933 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1933 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; // TODO1934 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; // TODO
1935 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
19341936
1935 var a: ?@Vector(3, u32) = .{ 0, 1, 2 };1937 var a: ?@Vector(3, u32) = .{ 0, 1, 2 };
1936 var b: @Vector(3, u32) = .{ 3, 4, 5 };1938 var b: @Vector(3, u32) = .{ 3, 4, 5 };
test/behavior/cast_int.zig+3
...@@ -35,6 +35,7 @@ test "coerce i8 to i32 and @intCast back" {...@@ -35,6 +35,7 @@ test "coerce i8 to i32 and @intCast back" {
35}35}
3636
37test "coerce non byte-sized integers accross 32bits boundary" {37test "coerce non byte-sized integers accross 32bits boundary" {
38 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
38 {39 {
39 var v: u21 = 6417;40 var v: u21 = 6417;
40 _ = &v;41 _ = &v;
...@@ -166,6 +167,7 @@ const Piece = packed struct {...@@ -166,6 +167,7 @@ const Piece = packed struct {
166test "load non byte-sized optional value" {167test "load non byte-sized optional value" {
167 // Originally reported at https://github.com/ziglang/zig/issues/14200168 // Originally reported at https://github.com/ziglang/zig/issues/14200
168 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;169 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
170 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
169171
170 // note: this bug is triggered by the == operator, expectEqual will hide it172 // note: this bug is triggered by the == operator, expectEqual will hide it
171 const opt: ?Piece = try Piece.charToPiece('p');173 const opt: ?Piece = try Piece.charToPiece('p');
...@@ -181,6 +183,7 @@ test "load non byte-sized optional value" {...@@ -181,6 +183,7 @@ test "load non byte-sized optional value" {
181test "load non byte-sized value in struct" {183test "load non byte-sized value in struct" {
182 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;184 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
183 if (builtin.cpu.arch.endian() != .little) return error.SkipZigTest; // packed struct TODO185 if (builtin.cpu.arch.endian() != .little) return error.SkipZigTest; // packed struct TODO
186 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
184187
185 // note: this bug is triggered by the == operator, expectEqual will hide it188 // note: this bug is triggered by the == operator, expectEqual will hide it
186 // using ptrCast not to depend on unitialised memory state189 // using ptrCast not to depend on unitialised memory state
test/behavior/enum.zig+1
...@@ -1121,6 +1121,7 @@ test "bit field access with enum fields" {...@@ -1121,6 +1121,7 @@ test "bit field access with enum fields" {
1121 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1121 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1122 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1122 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1123 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1123 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
1124 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
11241125
1125 var data = bit_field_1;1126 var data = bit_field_1;
1126 try expect(getA(&data) == A.Two);1127 try expect(getA(&data) == A.Two);
test/behavior/error.zig+1
...@@ -1087,6 +1087,7 @@ test "result location initialization of error union with OPV payload" {...@@ -1087,6 +1087,7 @@ test "result location initialization of error union with OPV payload" {
1087 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1087 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1088 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1088 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1089 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1089 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
1090 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
10901091
1091 const S = struct {1092 const S = struct {
1092 x: u0,1093 x: u0,
test/behavior/generics.zig+1
...@@ -412,6 +412,7 @@ test "generic struct as parameter type" {...@@ -412,6 +412,7 @@ test "generic struct as parameter type" {
412412
413test "slice as parameter type" {413test "slice as parameter type" {
414 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;414 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
415 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
415416
416 const S = struct {417 const S = struct {
417 fn internComptimeString(comptime str: []const u8) *const []const u8 {418 fn internComptimeString(comptime str: []const u8) *const []const u8 {
test/behavior/math.zig+4-1
...@@ -66,7 +66,7 @@ test "@clz" {...@@ -66,7 +66,7 @@ test "@clz" {
66 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO66 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
67 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO67 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
68 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;68 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
6969 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
70 try testClz();70 try testClz();
71 try comptime testClz();71 try comptime testClz();
72}72}
...@@ -870,6 +870,7 @@ test "@addWithOverflow" {...@@ -870,6 +870,7 @@ test "@addWithOverflow" {
870 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO870 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
871 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO871 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
872 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO872 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
873 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
873874
874 try testAddWithOverflow(u8, 250, 100, 94, 1);875 try testAddWithOverflow(u8, 250, 100, 94, 1);
875 try testAddWithOverflow(u8, 100, 150, 250, 0);876 try testAddWithOverflow(u8, 100, 150, 250, 0);
...@@ -931,6 +932,7 @@ test "@addWithOverflow > 64 bits" {...@@ -931,6 +932,7 @@ test "@addWithOverflow > 64 bits" {
931test "small int addition" {932test "small int addition" {
932 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO933 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
933 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO934 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
935 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
934936
935 var x: u2 = 0;937 var x: u2 = 0;
936 try expect(x == 0);938 try expect(x == 0);
...@@ -958,6 +960,7 @@ fn testMulWithOverflow(comptime T: type, a: T, b: T, mul: T, bit: u1) !void {...@@ -958,6 +960,7 @@ fn testMulWithOverflow(comptime T: type, a: T, b: T, mul: T, bit: u1) !void {
958test "basic @mulWithOverflow" {960test "basic @mulWithOverflow" {
959 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO961 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
960 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO962 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
963 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
961964
962 try testMulWithOverflow(u8, 86, 3, 2, 1);965 try testMulWithOverflow(u8, 86, 3, 2, 1);
963 try testMulWithOverflow(u8, 85, 3, 255, 0);966 try testMulWithOverflow(u8, 85, 3, 255, 0);
test/behavior/optional.zig+1
...@@ -641,6 +641,7 @@ test "result location initialization of optional with OPV payload" {...@@ -641,6 +641,7 @@ test "result location initialization of optional with OPV payload" {
641 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO641 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
642 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO642 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
643 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;643 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
644 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
644645
645 const S = struct {646 const S = struct {
646 x: u0,647 x: u0,
test/behavior/packed-struct.zig+5
...@@ -429,6 +429,7 @@ test "nested packed struct field pointers" {...@@ -429,6 +429,7 @@ test "nested packed struct field pointers" {
429 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO429 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
430 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;430 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
431 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // ubsan unaligned pointer access431 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // ubsan unaligned pointer access
432 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
432 if (native_endian != .little) return error.SkipZigTest; // Byte aligned packed struct field pointers have not been implemented yet433 if (native_endian != .little) return error.SkipZigTest; // Byte aligned packed struct field pointers have not been implemented yet
433434
434 const S2 = packed struct {435 const S2 = packed struct {
...@@ -953,6 +954,7 @@ test "pointer to container level packed struct field" {...@@ -953,6 +954,7 @@ test "pointer to container level packed struct field" {
953 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;954 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
954 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO955 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
955 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;956 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
957 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
956958
957 const S = packed struct(u32) {959 const S = packed struct(u32) {
958 test_bit: bool,960 test_bit: bool,
...@@ -997,6 +999,7 @@ test "bitcast back and forth" {...@@ -997,6 +999,7 @@ test "bitcast back and forth" {
997test "field access of packed struct smaller than its abi size inside struct initialized with rls" {999test "field access of packed struct smaller than its abi size inside struct initialized with rls" {
998 // Originally reported at https://github.com/ziglang/zig/issues/142001000 // Originally reported at https://github.com/ziglang/zig/issues/14200
999 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1001 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
1002 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
10001003
1001 const S = struct {1004 const S = struct {
1002 ps: packed struct { x: i2, y: i2 },1005 ps: packed struct { x: i2, y: i2 },
...@@ -1146,6 +1149,7 @@ test "assignment to non-byte-aligned field in packed struct" {...@@ -1146,6 +1149,7 @@ test "assignment to non-byte-aligned field in packed struct" {
1146 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1149 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1147 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1150 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1148 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1151 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
1152 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
11491153
1150 const Frame = packed struct {1154 const Frame = packed struct {
1151 num: u20,1155 num: u20,
...@@ -1360,6 +1364,7 @@ test "byte-aligned packed relocation" {...@@ -1360,6 +1364,7 @@ test "byte-aligned packed relocation" {
13601364
1361test "packed struct store of comparison result" {1365test "packed struct store of comparison result" {
1362 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1366 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
1367 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
13631368
1364 const S1 = packed struct {1369 const S1 = packed struct {
1365 val1: u3,1370 val1: u3,
test/behavior/packed-union.zig+2
...@@ -8,6 +8,7 @@ test "flags in packed union" {...@@ -8,6 +8,7 @@ test "flags in packed union" {
8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
10 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;10 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
11 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
1112
12 try testFlagsInPackedUnion();13 try testFlagsInPackedUnion();
13 try comptime testFlagsInPackedUnion();14 try comptime testFlagsInPackedUnion();
...@@ -50,6 +51,7 @@ test "flags in packed union at offset" {...@@ -50,6 +51,7 @@ test "flags in packed union at offset" {
50 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;51 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
51 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;52 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
52 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;53 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
54 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
5355
54 try testFlagsInPackedUnionAtOffset();56 try testFlagsInPackedUnionAtOffset();
55 try comptime testFlagsInPackedUnionAtOffset();57 try comptime testFlagsInPackedUnionAtOffset();
test/behavior/popcount.zig+1
...@@ -8,6 +8,7 @@ test "@popCount integers" {...@@ -8,6 +8,7 @@ test "@popCount integers" {
8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;10 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
11 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
1112
12 try comptime testPopCountIntegers();13 try comptime testPopCountIntegers();
13 try testPopCountIntegers();14 try testPopCountIntegers();
test/behavior/src.zig+2
...@@ -40,6 +40,8 @@ test "@src used as a comptime parameter" {...@@ -40,6 +40,8 @@ test "@src used as a comptime parameter" {
40}40}
4141
42test "@src in tuple passed to anytype function" {42test "@src in tuple passed to anytype function" {
43 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
44
43 const S = struct {45 const S = struct {
44 fn Foo(a: anytype) u32 {46 fn Foo(a: anytype) u32 {
45 return a[0].line;47 return a[0].line;
test/behavior/struct.zig+5
...@@ -424,6 +424,7 @@ test "packed struct 24bits" {...@@ -424,6 +424,7 @@ test "packed struct 24bits" {
424 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO424 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
425 if (builtin.cpu.arch.isArm()) return error.SkipZigTest; // TODO425 if (builtin.cpu.arch.isArm()) return error.SkipZigTest; // TODO
426 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO426 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
427 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
427428
428 comptime {429 comptime {
429 std.debug.assert(@sizeOf(Foo24Bits) == @sizeOf(u24));430 std.debug.assert(@sizeOf(Foo24Bits) == @sizeOf(u24));
...@@ -526,6 +527,7 @@ test "implicit cast packed struct field to const ptr" {...@@ -526,6 +527,7 @@ test "implicit cast packed struct field to const ptr" {
526 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO527 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
527 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO528 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
528 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;529 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
530 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
529531
530 const LevelUpMove = packed struct {532 const LevelUpMove = packed struct {
531 move_id: u9,533 move_id: u9,
...@@ -590,6 +592,7 @@ test "bit field access" {...@@ -590,6 +592,7 @@ test "bit field access" {
590 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO592 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
591 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO593 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
592 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;594 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
595 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
593596
594 var data = bit_field_1;597 var data = bit_field_1;
595 try expect(getA(&data) == 1);598 try expect(getA(&data) == 1);
...@@ -713,6 +716,7 @@ test "pointer to packed struct member in a stack variable" {...@@ -713,6 +716,7 @@ test "pointer to packed struct member in a stack variable" {
713 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO716 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
714 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO717 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
715 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;718 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
719 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
716720
717 const S = packed struct {721 const S = packed struct {
718 a: u2,722 a: u2,
...@@ -1525,6 +1529,7 @@ test "optional generic function label struct field" {...@@ -1525,6 +1529,7 @@ test "optional generic function label struct field" {
1525test "struct fields get automatically reordered" {1529test "struct fields get automatically reordered" {
1526 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1530 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
1527 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;1531 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
1532 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
15281533
1529 const S1 = struct {1534 const S1 = struct {
1530 a: u32,1535 a: u32,
test/behavior/threadlocal.zig+1
...@@ -9,6 +9,7 @@ test "thread local variable" {...@@ -9,6 +9,7 @@ test "thread local variable" {
9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;10 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
11 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt == .coff) return error.SkipZigTest; // TODO11 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt == .coff) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
1213
13 if (builtin.zig_backend == .stage2_x86_64 and builtin.os.tag == .macos) {14 if (builtin.zig_backend == .stage2_x86_64 and builtin.os.tag == .macos) {
14 // Fails due to register hazards.15 // Fails due to register hazards.
test/behavior/union.zig+1
...@@ -1841,6 +1841,7 @@ test "reinterpret packed union" {...@@ -1841,6 +1841,7 @@ test "reinterpret packed union" {
18411841
1842test "reinterpret packed union inside packed struct" {1842test "reinterpret packed union inside packed struct" {
1843 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1843 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
1844 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
18441845
1845 const U = packed union {1846 const U = packed union {
1846 a: u7,1847 a: u7,