authorgravatar for david@vortan.devDavid Rubin <david@vortan.dev> 2024-07-26 04:00:25-07:00
committergravatar for david@vortan.devDavid Rubin <david@vortan.dev> 2024-07-26 04:19:58-07:00
log8da212c11bc54bb78950988f5980c78161af8573
treeb2ea3f0019291f90a73da739a389ce30dd25eb5b
parent046001a34a070dffa6230ccbd8f1571e0b1c1240
signature Commit is signed but in an unrecognized format.

riscv: update tests and fix reuse bug


26 files changed, 18 insertions(+), 87 deletions(-)

src/arch/riscv64/CodeGen.zig+18-6
......@@ -1982,6 +1982,8 @@ fn truncateRegister(func: *Func, ty: Type, reg: Register) !void {
19821982 .signedness = .unsigned,
19831983 .bits = @intCast(ty.bitSize(pt)),
19841984 };
1985 assert(reg.class() == .int);
1986
19851987 const shift = math.cast(u6, 64 - int_info.bits % 64) orelse return;
19861988 switch (int_info.signedness) {
19871989 .signed => {
......@@ -2844,8 +2846,11 @@ fn genBinOp(
28442846 .cmp_gt,
28452847 .cmp_gte,
28462848 => {
2847 try func.truncateRegister(lhs_ty, lhs_reg);
2848 try func.truncateRegister(rhs_ty, rhs_reg);
2849 assert(lhs_reg.class() == rhs_reg.class());
2850 if (lhs_reg.class() == .int) {
2851 try func.truncateRegister(lhs_ty, lhs_reg);
2852 try func.truncateRegister(rhs_ty, rhs_reg);
2853 }
28492854
28502855 _ = try func.addInst(.{
28512856 .tag = .pseudo_compare,
......@@ -3923,7 +3928,7 @@ fn airPtrElemPtr(func: *Func, inst: Air.Inst.Index) !void {
39233928 const ty_pl = func.air.instructions.items(.data)[@intFromEnum(inst)].ty_pl;
39243929 const extra = func.air.extraData(Air.Bin, ty_pl.payload).data;
39253930
3926 const result = result: {
3931 const result: MCValue = if (func.liveness.isUnused(inst)) .unreach else result: {
39273932 const elem_ptr_ty = func.typeOfIndex(inst);
39283933 const base_ptr_ty = func.typeOf(extra.lhs);
39293934
......@@ -3959,6 +3964,7 @@ fn airPtrElemPtr(func: *Func, inst: Air.Inst.Index) !void {
39593964
39603965 break :result MCValue{ .register = result_reg };
39613966 };
3967
39623968 return func.finishAir(inst, result, .{ extra.lhs, extra.rhs, .none });
39633969}
39643970
......@@ -4409,9 +4415,15 @@ fn airLoad(func: *Func, inst: Air.Inst.Index) !void {
44094415 const elem_size = elem_ty.abiSize(pt);
44104416
44114417 const dst_mcv: MCValue = blk: {
4412 // "ptr" is 8 bytes, and if the element is more than that, we cannot reuse it.
4413 if (elem_size <= 8 and func.reuseOperand(inst, ty_op.operand, 0, ptr)) {
4414 // The MCValue that holds the pointer can be re-used as the value.
4418 // The MCValue that holds the pointer can be re-used as the value.
4419 // - "ptr" is 8 bytes, and if the element is more than that, we cannot reuse it.
4420 //
4421 // - "ptr" will be stored in an integer register, so the type that we're gonna
4422 // load into it must also be a type that can be inside of an integer register
4423 if (elem_size <= 8 and
4424 (if (ptr == .register) func.typeRegClass(elem_ty) == ptr.register.class() else true) and
4425 func.reuseOperand(inst, ty_op.operand, 0, ptr))
4426 {
44154427 break :blk ptr;
44164428 } else {
44174429 break :blk try func.allocRegOrMem(elem_ty, inst, true);
test/behavior/array.zig-2
......@@ -907,7 +907,6 @@ test "copied array element doesn't alias source" {
907907
908908test "array initialized with string literal" {
909909 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
910 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
911910
912911 const S = struct {
913912 a: u32,
......@@ -975,7 +974,6 @@ test "accessing multidimensional global array at comptime" {
975974 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
976975 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
977976 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
978 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
979977
980978 const S = struct {
981979 const array = [_][]const []const u8{
test/behavior/atomics.zig-2
......@@ -169,7 +169,6 @@ test "atomic load and rmw with enum" {
169169 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
170170 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
171171 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
172 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
173172
174173 const Value = enum(u8) { a, b, c };
175174 var x = Value.a;
......@@ -205,7 +204,6 @@ test "atomicrmw with floats" {
205204 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
206205 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
207206 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
208 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
209207
210208 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .aarch64) {
211209 // https://github.com/ziglang/zig/issues/10627
test/behavior/basic.zig-3
......@@ -645,7 +645,6 @@ test "string escapes" {
645645 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
646646 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
647647 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
648 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
649648
650649 try expectEqualStrings("\"", "\x22");
651650 try expectEqualStrings("\'", "\x27");
......@@ -778,7 +777,6 @@ test "discarding the result of various expressions" {
778777 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
779778 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
780779 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
781 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
782780
783781 const S = struct {
784782 fn foo() !u32 {
......@@ -1310,7 +1308,6 @@ test "break out of block based on comptime known values" {
13101308 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
13111309 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
13121310 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1313 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
13141311
13151312 const S = struct {
13161313 const source = "A-";
test/behavior/cast.zig-8
......@@ -24,7 +24,6 @@ test "peer type resolution: ?T and T" {
2424 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2525 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
2626 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
27 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
2827
2928 try expect(peerTypeTAndOptionalT(true, false).? == 0);
3029 try expect(peerTypeTAndOptionalT(false, false).? == 3);
......@@ -301,7 +300,6 @@ test "peer result null and comptime_int" {
301300 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
302301 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
303302 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
304 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
305303
306304 const S = struct {
307305 fn blah(n: i32) ?i32 {
......@@ -370,7 +368,6 @@ test "return u8 coercing into ?u32 return type" {
370368 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
371369 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
372370 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
373 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
374371
375372 const S = struct {
376373 fn doTheTest() !void {
......@@ -664,7 +661,6 @@ test "@floatCast cast down" {
664661test "peer type resolution: unreachable, error set, unreachable" {
665662 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
666663 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
667 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
668664
669665 const Error = error{
670666 FileDescriptorAlreadyPresentInSet,
......@@ -1212,7 +1208,6 @@ test "implicitly cast from [N]T to ?[]const T" {
12121208 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
12131209 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12141210 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1215 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
12161211
12171212 try expect(mem.eql(u8, castToOptionalSlice().?, "hi"));
12181213 comptime assert(mem.eql(u8, castToOptionalSlice().?, "hi"));
......@@ -1903,7 +1898,6 @@ test "peer type resolution: optional fixed-width int and comptime_int" {
19031898 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
19041899 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
19051900 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1906 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
19071901
19081902 var a: ?i32 = 42;
19091903 _ = &a;
......@@ -2263,7 +2257,6 @@ test "cast builtins can wrap result in optional" {
22632257 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
22642258 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
22652259 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2266 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
22672260
22682261 const S = struct {
22692262 const MyEnum = enum(u32) { _ };
......@@ -2572,7 +2565,6 @@ test "result information is preserved through many nested structures" {
25722565 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
25732566 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
25742567 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2575 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
25762568
25772569 const S = struct {
25782570 fn doTheTest() !void {
test/behavior/defer.zig-1
......@@ -53,7 +53,6 @@ test "return variable while defer expression in scope to modify it" {
5353 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
5454 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
5555 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
56 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
5756
5857 const S = struct {
5958 fn doTheTest() !void {
test/behavior/enum.zig-2
......@@ -1219,8 +1219,6 @@ test "enum tag from a local variable" {
12191219}
12201220
12211221test "auto-numbered enum with signed tag type" {
1222 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1223
12241222 const E = enum(i32) { a, b };
12251223
12261224 try std.testing.expectEqual(@as(i32, 0), @intFromEnum(E.a));
test/behavior/error.zig-7
......@@ -319,7 +319,6 @@ test "error inference with an empty set" {
319319
320320test "error union peer type resolution" {
321321 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
322 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
323322
324323 try testErrorUnionPeerTypeResolution(1);
325324}
......@@ -467,7 +466,6 @@ test "optional error set is the same size as error set" {
467466 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
468467 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
469468 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
470 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
471469
472470 comptime assert(@sizeOf(?anyerror) == @sizeOf(anyerror));
473471 comptime assert(@alignOf(?anyerror) == @alignOf(anyerror));
......@@ -915,7 +913,6 @@ test "field access of anyerror results in smaller error set" {
915913test "optional error union return type" {
916914 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
917915 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
918 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
919916
920917 const S = struct {
921918 fn foo() ?anyerror!u32 {
......@@ -930,7 +927,6 @@ test "optional error union return type" {
930927test "optional error set return type" {
931928 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
932929 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
933 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
934930
935931 const E = error{ A, B };
936932 const S = struct {
......@@ -944,8 +940,6 @@ test "optional error set return type" {
944940}
945941
946942test "optional error set function parameter" {
947 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
948
949943 const S = struct {
950944 fn doTheTest(a: ?anyerror) !void {
951945 try std.testing.expect(a.? == error.OutOfMemory);
......@@ -975,7 +969,6 @@ test "returning an error union containing a type with no runtime bits" {
975969test "try used in recursive function with inferred error set" {
976970 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
977971 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
978 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
979972 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
980973
981974 const Value = union(enum) {
test/behavior/fn.zig-1
......@@ -450,7 +450,6 @@ test "implicit cast function to function ptr" {
450450test "method call with optional and error union first param" {
451451 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
452452 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
453 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
454453
455454 const S = struct {
456455 x: i32 = 1234,
test/behavior/for.zig-1
......@@ -486,7 +486,6 @@ test "inferred alloc ptr of for loop" {
486486 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
487487 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
488488 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
489 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
490489
491490 {
492491 var cond = false;
test/behavior/if.zig-2
......@@ -191,8 +191,6 @@ test "if value shouldn't be load-elided if used later (structs)" {
191191}
192192
193193test "if value shouldn't be load-elided if used later (optionals)" {
194 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
195
196194 var a: ?i32 = 1;
197195 var b: ?i32 = 1;
198196
test/behavior/null.zig-1
......@@ -73,7 +73,6 @@ fn foo(x: ?i32) ?bool {
7373test "test null runtime" {
7474 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
7575 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
76 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
7776
7877 try testTestNullRuntime(null);
7978}
test/behavior/optional.zig-5
......@@ -9,7 +9,6 @@ const expectEqualStrings = std.testing.expectEqualStrings;
99test "passing an optional integer as a parameter" {
1010 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1111 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1312
1413 const S = struct {
1514 fn entry() bool {
......@@ -259,7 +258,6 @@ test "unwrap function call with optional pointer return value" {
259258test "nested orelse" {
260259 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
261260 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
262 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
263261
264262 const S = struct {
265263 fn entry() !void {
......@@ -342,7 +340,6 @@ test "0-bit child type coerced to optional return ptr result location" {
342340 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
343341 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
344342 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
345 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
346343
347344 const S = struct {
348345 fn doTheTest() !void {
......@@ -533,7 +530,6 @@ test "Optional slice size is optimized" {
533530 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
534531 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
535532 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
536 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
537533
538534 try expect(@sizeOf(?[]u8) == @sizeOf([]u8));
539535 var a: ?[]const u8 = null;
......@@ -547,7 +543,6 @@ test "Optional slice passed to function" {
547543 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
548544 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
549545 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
550 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
551546
552547 const S = struct {
553548 fn foo(a: ?[]const u8) !void {
test/behavior/pointers.zig-1
......@@ -569,7 +569,6 @@ test "ptrCast comptime known slice to C pointer" {
569569 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
570570 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
571571 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
572 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
573572
574573 const s: [:0]const u8 = "foo";
575574 var p: [*c]const u8 = @ptrCast(s);
test/behavior/popcount.zig-1
......@@ -8,7 +8,6 @@ test "@popCount integers" {
88 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
99 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1010 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1211
1312 try comptime testPopCountIntegers();
1413 try testPopCountIntegers();
test/behavior/slice.zig-4
......@@ -834,7 +834,6 @@ test "global slice field access" {
834834 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
835835 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
836836 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
837 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
838837
839838 const S = struct {
840839 var slice: []const u8 = undefined;
......@@ -890,7 +889,6 @@ test "empty slice ptr is non null" {
890889test "slice decays to many pointer" {
891890 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
892891 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
893 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
894892
895893 var buf: [8]u8 = "abcdefg\x00".*;
896894 const p: [*:0]const u8 = buf[0..7 :0];
......@@ -901,7 +899,6 @@ test "write through pointer to optional slice arg" {
901899 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
902900 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
903901 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
904 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
905902
906903 const S = struct {
907904 fn bar(foo: *?[]const u8) !void {
......@@ -954,7 +951,6 @@ test "slicing slices gives correct result" {
954951 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
955952 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
956953 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
957 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
958954
959955 const foo = "1234";
960956 const bar = foo[0..4];
test/behavior/struct.zig-4
......@@ -1234,7 +1234,6 @@ test "typed init through error unions and optionals" {
12341234 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
12351235 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
12361236 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1237 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
12381237
12391238 const S = struct {
12401239 a: u32,
......@@ -1456,8 +1455,6 @@ test "struct field has a pointer to an aligned version of itself" {
14561455}
14571456
14581457test "struct has only one reference" {
1459 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1460
14611458 const S = struct {
14621459 fn optionalStructParam(_: ?struct { x: u8 }) void {}
14631460 fn errorUnionStructParam(_: error{}!struct { x: u8 }) void {}
......@@ -1980,7 +1977,6 @@ test "runtime call in nested initializer" {
19801977 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
19811978 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
19821979 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1983 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
19841980
19851981 const Holder = struct {
19861982 array: []const u8,
test/behavior/switch.zig-9
......@@ -316,7 +316,6 @@ test "switch on union with some prongs capturing" {
316316 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
317317 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
318318 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
319 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
320319
321320 const X = union(enum) {
322321 a,
......@@ -538,7 +537,6 @@ test "switch prongs with cases with identical payload types" {
538537 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
539538 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
540539 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
541 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
542540
543541 const Union = union(enum) {
544542 A: usize,
......@@ -782,8 +780,6 @@ test "comptime inline switch" {
782780}
783781
784782test "switch capture peer type resolution" {
785 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
786
787783 const U = union(enum) {
788784 a: u32,
789785 b: u64,
......@@ -799,8 +795,6 @@ test "switch capture peer type resolution" {
799795}
800796
801797test "switch capture peer type resolution for in-memory coercible payloads" {
802 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
803
804798 const T1 = c_int;
805799 const T2 = @Type(@typeInfo(T1));
806800
......@@ -822,7 +816,6 @@ test "switch capture peer type resolution for in-memory coercible payloads" {
822816
823817test "switch pointer capture peer type resolution" {
824818 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
825 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
826819
827820 const T1 = c_int;
828821 const T2 = @Type(@typeInfo(T1));
......@@ -925,8 +918,6 @@ test "switch prong captures range" {
925918}
926919
927920test "prong with inline call to unreachable" {
928 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
929
930921 const U = union(enum) {
931922 void: void,
932923 bool: bool,
test/behavior/switch_prong_implicit_cast.zig-1
......@@ -18,7 +18,6 @@ test "switch prong implicit cast" {
1818 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1919 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2020 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
21 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
2221
2322 const result = switch (foo(2) catch unreachable) {
2423 FormValue.One => false,
test/behavior/tuple.zig-1
......@@ -405,7 +405,6 @@ test "nested runtime conditionals in tuple initializer" {
405405 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
406406 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
407407 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
408 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
409408
410409 var data: u8 = 0;
411410 _ = &data;
test/behavior/tuple_declarations.zig-2
......@@ -7,7 +7,6 @@ const expectEqualStrings = testing.expectEqualStrings;
77test "tuple declaration type info" {
88 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
99 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
10 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1110
1211 {
1312 const T = struct { comptime u32 align(2) = 1, []const u8 };
......@@ -36,7 +35,6 @@ test "tuple declaration type info" {
3635test "Tuple declaration usage" {
3736 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
3837 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
39 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
4038
4139 const T = struct { u32, []const u8 };
4240 var t: T = .{ 1, "foo" };
test/behavior/type_info.zig-5
......@@ -565,8 +565,6 @@ test "StructField.is_comptime" {
565565}
566566
567567test "typeInfo resolves usingnamespace declarations" {
568 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
569
570568 const A = struct {
571569 pub const f1 = 42;
572570 };
......@@ -592,7 +590,6 @@ test "value from struct @typeInfo default_value can be loaded at comptime" {
592590test "@typeInfo decls and usingnamespace" {
593591 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
594592 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
595 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
596593
597594 const A = struct {
598595 pub const x = 5;
......@@ -633,8 +630,6 @@ test "type info of tuple of string literal default value" {
633630}
634631
635632test "@typeInfo only contains pub decls" {
636 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
637
638633 const other = struct {
639634 const std = @import("std");
640635
test/behavior/typename.zig-8
......@@ -16,7 +16,6 @@ test "anon fn param" {
1616 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1717 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1818 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
19 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
2019
2120 // https://github.com/ziglang/zig/issues/9339
2221 try expectEqualStringsIgnoreDigits(
......@@ -42,7 +41,6 @@ test "anon field init" {
4241 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
4342 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
4443 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
45 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
4644 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
4745
4846 const Foo = .{
......@@ -69,7 +67,6 @@ test "basic" {
6967 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
7068 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
7169 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
72 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
7370
7471 try expectEqualStrings("i64", @typeName(i64));
7572 try expectEqualStrings("*usize", @typeName(*usize));
......@@ -91,7 +88,6 @@ test "top level decl" {
9188 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
9289 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
9390 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
94 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
9591 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9692
9793 try expectEqualStrings(
......@@ -142,7 +138,6 @@ test "fn param" {
142138 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
143139 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
144140 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
145 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
146141 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
147142
148143 // https://github.com/ziglang/zig/issues/675
......@@ -223,7 +218,6 @@ test "local variable" {
223218 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
224219 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
225220 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
226 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
227221 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
228222
229223 const Foo = struct { a: u32 };
......@@ -243,7 +237,6 @@ test "comptime parameters not converted to anytype in function type" {
243237 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
244238 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
245239 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
246 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
247240
248241 const T = fn (fn (type) void, void) void;
249242 try expectEqualStrings("fn (comptime fn (comptime type) void, void) void", @typeName(T));
......@@ -253,7 +246,6 @@ test "anon name strategy used in sub expression" {
253246 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
254247 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
255248 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
256 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
257249 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
258250
259251 const S = struct {
test/behavior/union.zig-5
......@@ -171,7 +171,6 @@ test "constant tagged union with payload" {
171171 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
172172 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
173173 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
174 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
175174
176175 var empty = TaggedUnionWithPayload{ .Empty = {} };
177176 var full = TaggedUnionWithPayload{ .Full = 13 };
......@@ -655,7 +654,6 @@ test "union(enum(u32)) with specified and unspecified tag values" {
655654 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
656655 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
657656 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
658 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
659657
660658 comptime assert(Tag(Tag(MultipleChoice2)) == u32);
661659 try testEnumWithSpecifiedAndUnspecifiedTagValues(MultipleChoice2{ .C = 123 });
......@@ -807,7 +805,6 @@ test "return union init with void payload" {
807805 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
808806 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
809807 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
810 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
811808
812809 const S = struct {
813810 fn entry() !void {
......@@ -970,7 +967,6 @@ test "function call result coerces from tagged union to the tag" {
970967 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
971968 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
972969 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
973 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
974970
975971 const S = struct {
976972 const Arch = union(enum) {
......@@ -1135,7 +1131,6 @@ test "@unionInit on union with tag but no fields" {
11351131 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
11361132 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11371133 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1138 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
11391134
11401135 const S = struct {
11411136 const Type = enum(u8) { no_op = 105 };
test/behavior/union_with_members.zig-1
......@@ -21,7 +21,6 @@ test "enum with members" {
2121 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
2222 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
2323 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
24 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
2524
2625 const a = ET{ .SINT = -42 };
2726 const b = ET{ .UINT = 42 };
test/behavior/while.zig-4
......@@ -207,7 +207,6 @@ test "while on optional with else result follow else prong" {
207207 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
208208 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
209209 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
210 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
211210
212211 const result = while (returnNull()) |value| {
213212 break value;
......@@ -219,7 +218,6 @@ test "while on optional with else result follow break prong" {
219218 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
220219 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
221220 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
222 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
223221
224222 const result = while (returnOptional(10)) |value| {
225223 break value;
......@@ -292,7 +290,6 @@ test "while optional 2 break statements and an else" {
292290 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
293291 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
294292 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
295 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
296293
297294 const S = struct {
298295 fn entry(opt_t: ?bool, f: bool) !void {
......@@ -391,7 +388,6 @@ test "breaking from a loop in an if statement" {
391388 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
392389 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
393390 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
394 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
395391
396392 const S = struct {
397393 fn retOpt() ?u32 {