authorgravatar for luuk@degram.devLuuk de Gram <luuk@degram.dev> 2023-10-15 05:51:41+02:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2023-10-15 05:51:41+02:00
logb0f031f5730be496872591dce3242004cf9a6f22
treecc529312ee13c80a55f21d95ab051cd7f1cd2cea
parenta126afa1c3fe7e39678c201f6470b7899aedd47e
parent78fe3feedbfa2f86bfbacd1b478a5104092dffeb
signaturebadge-question-mark Signed by PGP key 4AEE18F83AFDEB23

Merge pull request #17523 from xxxbxxx/wasm-codegen

wasm codegen fixes

33 files changed, 91 insertions(+), 92 deletions(-)

src/arch/wasm/CodeGen.zig+43-22
......@@ -3602,11 +3602,6 @@ fn cmp(func: *CodeGen, lhs: WValue, rhs: WValue, ty: Type, op: std.math.CompareO
36023602 return func.cmpBigInt(lhs, rhs, ty, op);
36033603 }
36043604
3605 // ensure that when we compare pointers, we emit
3606 // the true pointer of a stack value, rather than the stack pointer.
3607 try func.lowerToStack(lhs);
3608 try func.lowerToStack(rhs);
3609
36103605 const signedness: std.builtin.Signedness = blk: {
36113606 // by default we tell the operand type is unsigned (i.e. bools and enum values)
36123607 if (ty.zigTypeTag(mod) != .Int) break :blk .unsigned;
......@@ -3614,6 +3609,30 @@ fn cmp(func: *CodeGen, lhs: WValue, rhs: WValue, ty: Type, op: std.math.CompareO
36143609 // incase of an actual integer, we emit the correct signedness
36153610 break :blk ty.intInfo(mod).signedness;
36163611 };
3612 const extend_sign = blk: {
3613 // do we need to extend the sign bit?
3614 if (signedness != .signed) break :blk false;
3615 if (op == .eq or op == .neq) break :blk false;
3616 const int_bits = ty.intInfo(mod).bits;
3617 const wasm_bits = toWasmBits(int_bits) orelse unreachable;
3618 break :blk (wasm_bits != int_bits);
3619 };
3620
3621 const lhs_wasm = if (extend_sign)
3622 try func.signExtendInt(lhs, ty)
3623 else
3624 lhs;
3625
3626 const rhs_wasm = if (extend_sign)
3627 try func.signExtendInt(rhs, ty)
3628 else
3629 rhs;
3630
3631 // ensure that when we compare pointers, we emit
3632 // the true pointer of a stack value, rather than the stack pointer.
3633 try func.lowerToStack(lhs_wasm);
3634 try func.lowerToStack(rhs_wasm);
3635
36173636 const opcode: wasm.Opcode = buildOpcode(.{
36183637 .valtype1 = typeToValtype(ty, mod),
36193638 .op = switch (op) {
......@@ -5331,17 +5350,17 @@ fn airAggregateInit(func: *CodeGen, inst: Air.Inst.Index) InnerError!void {
53315350 else => {
53325351 const result = try func.allocStack(result_ty);
53335352 const offset = try func.buildPointerOffset(result, 0, .new); // pointer to offset
5353 var prev_field_offset: u64 = 0;
53345354 for (elements, 0..) |elem, elem_index| {
53355355 if ((try result_ty.structFieldValueComptime(mod, elem_index)) != null) continue;
53365356
53375357 const elem_ty = result_ty.structFieldType(elem_index, mod);
5338 const elem_size: u32 = @intCast(elem_ty.abiSize(mod));
5358 const field_offset = result_ty.structFieldOffset(elem_index, mod);
5359 _ = try func.buildPointerOffset(offset, @intCast(field_offset - prev_field_offset), .modify);
5360 prev_field_offset = field_offset;
5361
53395362 const value = try func.resolveInst(elem);
53405363 try func.store(offset, value, elem_ty, 0);
5341
5342 if (elem_index < elements.len - 1) {
5343 _ = try func.buildPointerOffset(offset, elem_size, .modify);
5344 }
53455364 }
53465365
53475366 break :result_value result;
......@@ -6920,12 +6939,13 @@ fn signedSat(func: *CodeGen, lhs_operand: WValue, rhs_operand: WValue, ty: Type,
69206939 const int_info = ty.intInfo(mod);
69216940 const wasm_bits = toWasmBits(int_info.bits).?;
69226941 const is_wasm_bits = wasm_bits == int_info.bits;
6942 const ext_ty = if (!is_wasm_bits) try mod.intType(int_info.signedness, wasm_bits) else ty;
69236943
69246944 var lhs = if (!is_wasm_bits) lhs: {
6925 break :lhs try (try func.signExtendInt(lhs_operand, ty)).toLocal(func, ty);
6945 break :lhs try (try func.signExtendInt(lhs_operand, ty)).toLocal(func, ext_ty);
69266946 } else lhs_operand;
69276947 var rhs = if (!is_wasm_bits) rhs: {
6928 break :rhs try (try func.signExtendInt(rhs_operand, ty)).toLocal(func, ty);
6948 break :rhs try (try func.signExtendInt(rhs_operand, ty)).toLocal(func, ext_ty);
69296949 } else rhs_operand;
69306950
69316951 const max_val: u64 = @as(u64, @intCast((@as(u65, 1) << @as(u7, @intCast(int_info.bits - 1))) - 1));
......@@ -6941,20 +6961,20 @@ fn signedSat(func: *CodeGen, lhs_operand: WValue, rhs_operand: WValue, ty: Type,
69416961 else => unreachable,
69426962 };
69436963
6944 var bin_result = try (try func.binOp(lhs, rhs, ty, op)).toLocal(func, ty);
6964 var bin_result = try (try func.binOp(lhs, rhs, ext_ty, op)).toLocal(func, ext_ty);
69456965 if (!is_wasm_bits) {
69466966 defer bin_result.free(func); // not returned in this branch
69476967 defer lhs.free(func); // uses temporary local for absvalue
69486968 defer rhs.free(func); // uses temporary local for absvalue
69496969 try func.emitWValue(bin_result);
69506970 try func.emitWValue(max_wvalue);
6951 _ = try func.cmp(bin_result, max_wvalue, ty, .lt);
6971 _ = try func.cmp(bin_result, max_wvalue, ext_ty, .lt);
69526972 try func.addTag(.select);
69536973 try func.addLabel(.local_set, bin_result.local.value); // re-use local
69546974
69556975 try func.emitWValue(bin_result);
69566976 try func.emitWValue(min_wvalue);
6957 _ = try func.cmp(bin_result, min_wvalue, ty, .gt);
6977 _ = try func.cmp(bin_result, min_wvalue, ext_ty, .gt);
69586978 try func.addTag(.select);
69596979 try func.addLabel(.local_set, bin_result.local.value); // re-use local
69606980 return (try func.wrapOperand(bin_result, ty)).toLocal(func, ty);
......@@ -7036,12 +7056,13 @@ fn airShlSat(func: *CodeGen, inst: Air.Inst.Index) InnerError!void {
70367056 64 => WValue{ .imm64 = shift_size },
70377057 else => unreachable,
70387058 };
7059 const ext_ty = try mod.intType(int_info.signedness, wasm_bits);
70397060
7040 var shl_res = try (try func.binOp(lhs, shift_value, ty, .shl)).toLocal(func, ty);
7061 var shl_res = try (try func.binOp(lhs, shift_value, ext_ty, .shl)).toLocal(func, ext_ty);
70417062 defer shl_res.free(func);
7042 var shl = try (try func.binOp(shl_res, rhs, ty, .shl)).toLocal(func, ty);
7063 var shl = try (try func.binOp(shl_res, rhs, ext_ty, .shl)).toLocal(func, ext_ty);
70437064 defer shl.free(func);
7044 var shr = try (try func.binOp(shl, rhs, ty, .shr)).toLocal(func, ty);
7065 var shr = try (try func.binOp(shl, rhs, ext_ty, .shr)).toLocal(func, ext_ty);
70457066 defer shr.free(func);
70467067
70477068 switch (wasm_bits) {
......@@ -7053,7 +7074,7 @@ fn airShlSat(func: *CodeGen, inst: Air.Inst.Index) InnerError!void {
70537074
70547075 try func.addImm32(std.math.minInt(i32));
70557076 try func.addImm32(std.math.maxInt(i32));
7056 _ = try func.cmp(shl_res, .{ .imm32 = 0 }, ty, .lt);
7077 _ = try func.cmp(shl_res, .{ .imm32 = 0 }, ext_ty, .lt);
70577078 try func.addTag(.select);
70587079 },
70597080 64 => blk: {
......@@ -7064,16 +7085,16 @@ fn airShlSat(func: *CodeGen, inst: Air.Inst.Index) InnerError!void {
70647085
70657086 try func.addImm64(@as(u64, @bitCast(@as(i64, std.math.minInt(i64)))));
70667087 try func.addImm64(@as(u64, @bitCast(@as(i64, std.math.maxInt(i64)))));
7067 _ = try func.cmp(shl_res, .{ .imm64 = 0 }, ty, .lt);
7088 _ = try func.cmp(shl_res, .{ .imm64 = 0 }, ext_ty, .lt);
70687089 try func.addTag(.select);
70697090 },
70707091 else => unreachable,
70717092 }
70727093 try func.emitWValue(shl);
7073 _ = try func.cmp(shl_res, shr, ty, .neq);
7094 _ = try func.cmp(shl_res, shr, ext_ty, .neq);
70747095 try func.addTag(.select);
70757096 try func.addLabel(.local_set, result.local.value);
7076 var shift_result = try func.binOp(result, shift_value, ty, .shr);
7097 var shift_result = try func.binOp(result, shift_value, ext_ty, .shr);
70777098 if (is_signed) {
70787099 shift_result = try func.wrapOperand(shift_result, ty);
70797100 }
test/behavior/align.zig-1
......@@ -571,7 +571,6 @@ fn overaligned_fn() align(0x1000) i32 {
571571test "comptime alloc alignment" {
572572 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
573573 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
574 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
575574 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
576575 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
577576
test/behavior/basic.zig+48-2
......@@ -38,7 +38,6 @@ test "truncate to non-power-of-two integers" {
3838}
3939
4040test "truncate to non-power-of-two integers from 128-bit" {
41 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
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
......@@ -398,7 +397,6 @@ test "array 2D const double ptr" {
398397 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
399398 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
400399 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
401 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
402400 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
403401
404402 const rect_2d_vertexes = [_][1]f32{
......@@ -1172,3 +1170,51 @@ test "pointer to struct literal with runtime field is constant" {
11721170 const ptr = &S{ .data = runtime_zero };
11731171 try expect(@typeInfo(@TypeOf(ptr)).Pointer.is_const);
11741172}
1173
1174test "integer compare" {
1175 const S = struct {
1176 fn doTheTestSigned(comptime T: type) !void {
1177 var z: T = 0;
1178 var p: T = 123;
1179 var n: T = -123;
1180 try expect(z == z and z != p and z != n);
1181 try expect(p == p and p != n and n == n);
1182 try expect(z > n and z < p and z >= n and z <= p);
1183 try expect(!(z < n or z > p or z <= n or z >= p or z > z or z < z));
1184 try expect(p > n and n < p and p >= n and n <= p and p >= p and p <= p and n >= n and n <= n);
1185 try expect(!(p < n or n > p or p <= n or n >= p or p > p or p < p or n > n or n < n));
1186 try expect(z == 0 and z != 123 and z != -123 and 0 == z and 0 != p and 0 != n);
1187 try expect(z > -123 and p > -123 and !(n > 123));
1188 try expect(z < 123 and !(p < 123) and n < 123);
1189 try expect(-123 <= z and -123 <= p and -123 <= n);
1190 try expect(123 >= z and 123 >= p and 123 >= n);
1191 try expect(!(0 != z or 123 != p or -123 != n));
1192 try expect(!(z > 0 or -123 > p or 123 < n));
1193 }
1194 fn doTheTestUnsigned(comptime T: type) !void {
1195 var z: T = 0;
1196 var p: T = 123;
1197 try expect(z == z and z != p);
1198 try expect(p == p);
1199 try expect(z < p and z <= p);
1200 try expect(!(z > p or z >= p or z > z or z < z));
1201 try expect(p >= p and p <= p);
1202 try expect(!(p > p or p < p));
1203 try expect(z == 0 and z != 123 and z != -123 and 0 == z and 0 != p);
1204 try expect(z > -123 and p > -123);
1205 try expect(z < 123 and !(p < 123));
1206 try expect(-123 <= z and -123 <= p);
1207 try expect(123 >= z and 123 >= p);
1208 try expect(!(0 != z or 123 != p));
1209 try expect(!(z > 0 or -123 > p));
1210 }
1211 };
1212 inline for (.{ u8, u16, u32, u64, usize, u10, u20, u30, u60 }) |T| {
1213 try S.doTheTestUnsigned(T);
1214 try comptime S.doTheTestUnsigned(T);
1215 }
1216 inline for (.{ i8, i16, i32, i64, isize, i10, i20, i30, i60 }) |T| {
1217 try S.doTheTestSigned(T);
1218 try comptime S.doTheTestSigned(T);
1219 }
1220}
test/behavior/bugs/10684.zig-1
......@@ -3,7 +3,6 @@ const builtin = @import("builtin");
33const expectEqualStrings = std.testing.expectEqualStrings;
44
55test "slicing slices" {
6 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
76 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
87 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
98 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
test/behavior/bugs/11787.zig-1
......@@ -3,7 +3,6 @@ const builtin = @import("builtin");
33const testing = std.testing;
44
55test "slicing zero length array field of struct" {
6 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
76 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
87 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
98 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
test/behavior/bugs/11995.zig-1
......@@ -17,7 +17,6 @@ const wuffs_base__slice_u8 = extern struct {
1717 len: usize,
1818};
1919test {
20 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
2120 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
2221 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
2322 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
test/behavior/bugs/12000.zig-1
......@@ -6,7 +6,6 @@ const T = struct {
66};
77
88test {
9 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
109 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
1110 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1211 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
test/behavior/bugs/12051.zig-1
......@@ -2,7 +2,6 @@ const std = @import("std");
22const builtin = @import("builtin");
33
44test {
5 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
65 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
76 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
87 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
test/behavior/bugs/12092.zig-1
......@@ -14,7 +14,6 @@ fn takeFoo(foo: *const Foo) !void {
1414}
1515
1616test {
17 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1817 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
1918 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
2019 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
test/behavior/bugs/12119.zig-1
......@@ -5,7 +5,6 @@ const u8x32 = @Vector(32, u8);
55const u32x8 = @Vector(8, u32);
66
77test {
8 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
98 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
109 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1110 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
test/behavior/bugs/12450.zig-1
......@@ -9,7 +9,6 @@ const Foo = packed struct {
99var buffer: [256]u8 = undefined;
1010
1111test {
12 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1312 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
1413 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1514 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
test/behavior/bugs/12680.zig-1
......@@ -8,7 +8,6 @@ extern fn test_func() callconv(.C) usize;
88test "export a function twice" {
99 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1010 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
11 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
1211 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1312 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1413 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf) return error.SkipZigTest;
test/behavior/bugs/13068.zig-1
......@@ -7,7 +7,6 @@ var list = std.ArrayList(u32).init(allocator);
77test {
88 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
99 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1110 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1211 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1312
test/behavior/bugs/13366.zig-1
......@@ -13,7 +13,6 @@ const Block = struct {
1313};
1414
1515test {
16 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1716 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
1817 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1918 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
test/behavior/bugs/1741.zig-1
......@@ -2,7 +2,6 @@ const std = @import("std");
22const builtin = @import("builtin");
33
44test "fixed" {
5 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
65 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
76 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
87 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
test/behavior/bugs/1851.zig-1
......@@ -3,7 +3,6 @@ const std = @import("std");
33const expect = std.testing.expect;
44
55test "allocation and looping over 3-byte integer" {
6 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
76 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
87 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
98 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
test/behavior/bugs/2622.zig-1
......@@ -3,7 +3,6 @@ const builtin = @import("builtin");
33var buf: []u8 = undefined;
44
55test "reslice of undefined global var slice" {
6 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
76 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
87 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
98 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
test/behavior/bugs/2727.zig-1
......@@ -5,7 +5,6 @@ fn t() bool {
55}
66
77test {
8 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
98 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
109 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1110 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
test/behavior/bugs/6047.zig-1
......@@ -10,7 +10,6 @@ fn getError2() !void {
1010}
1111
1212test "`try`ing an if/else expression" {
13 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1413 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
1514 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1615 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
test/behavior/bugs/6905.zig-1
......@@ -2,7 +2,6 @@ const expect = @import("std").testing.expect;
22const builtin = @import("builtin");
33
44test "sentinel-terminated 0-length slices" {
5 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
65 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
76 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
87 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
test/behavior/bugs/6947.zig-1
......@@ -5,7 +5,6 @@ fn destroy(ptr: *void) void {
55}
66
77test {
8 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
98 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
109 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1110 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
test/behavior/bugs/7325.zig-1
......@@ -78,7 +78,6 @@ fn genExpression(expr: Expression) !ExpressionResult {
7878}
7979
8080test {
81 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
8281 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
8382 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
8483 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
test/behavior/bugs/8646.zig-1
......@@ -7,7 +7,6 @@ const array = [_][]const []const u8{
77};
88
99test {
10 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
1110 if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
1211 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1312 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
test/behavior/bugs/920.zig-1
......@@ -57,7 +57,6 @@ const NormalDist = blk: {
5757};
5858
5959test "bug 920 fixed" {
60 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
6160 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
6261 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
6362 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
test/behavior/cast.zig-25
......@@ -1544,7 +1544,6 @@ test "implicit cast from [:0]T to [*c]T" {
15441544
15451545test "bitcast packed struct with u0" {
15461546 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1547 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
15481547
15491548 const S = packed struct(u2) { a: u0, b: u2 };
15501549 const s = @as(S, @bitCast(@as(u2, 2)));
......@@ -1572,7 +1571,6 @@ test "single item pointer to pointer to array to slice" {
15721571}
15731572
15741573test "peer type resolution forms error union" {
1575 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
15761574 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
15771575
15781576 var foo: i32 = 123;
......@@ -1611,7 +1609,6 @@ test "coercion from single-item pointer to @as to slice" {
16111609test "peer type resolution: const sentinel slice and mutable non-sentinel slice" {
16121610 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
16131611 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1614 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
16151612 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
16161613 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
16171614
......@@ -1641,7 +1638,6 @@ test "peer type resolution: float and comptime-known fixed-width integer" {
16411638 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
16421639 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
16431640 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1644 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
16451641 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
16461642 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
16471643
......@@ -1663,7 +1659,6 @@ test "peer type resolution: float and comptime-known fixed-width integer" {
16631659test "peer type resolution: same array type with sentinel" {
16641660 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
16651661 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1666 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
16671662 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
16681663 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
16691664
......@@ -1685,7 +1680,6 @@ test "peer type resolution: same array type with sentinel" {
16851680test "peer type resolution: array with sentinel and array without sentinel" {
16861681 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
16871682 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1688 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
16891683 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
16901684 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
16911685
......@@ -1707,7 +1701,6 @@ test "peer type resolution: array with sentinel and array without sentinel" {
17071701test "peer type resolution: array and vector with same child type" {
17081702 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
17091703 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1710 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
17111704 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
17121705 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
17131706
......@@ -1752,7 +1745,6 @@ test "peer type resolution: array with smaller child type and vector with larger
17521745test "peer type resolution: error union and optional of same type" {
17531746 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
17541747 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1755 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
17561748 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
17571749 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
17581750
......@@ -1775,7 +1767,6 @@ test "peer type resolution: error union and optional of same type" {
17751767test "peer type resolution: C pointer and @TypeOf(null)" {
17761768 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
17771769 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1778 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
17791770 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
17801771 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
17811772
......@@ -1797,7 +1788,6 @@ test "peer type resolution: C pointer and @TypeOf(null)" {
17971788test "peer type resolution: three-way resolution combines error set and optional" {
17981789 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
17991790 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1800 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
18011791 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
18021792 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
18031793
......@@ -1861,7 +1851,6 @@ test "peer type resolution: vector and optional vector" {
18611851test "peer type resolution: optional fixed-width int and comptime_int" {
18621852 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
18631853 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1864 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
18651854 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
18661855 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
18671856
......@@ -1883,7 +1872,6 @@ test "peer type resolution: optional fixed-width int and comptime_int" {
18831872test "peer type resolution: array and tuple" {
18841873 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
18851874 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1886 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
18871875 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
18881876 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
18891877
......@@ -1971,7 +1959,6 @@ test "peer type resolution: vector and array and tuple" {
19711959test "peer type resolution: empty tuple pointer and slice" {
19721960 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
19731961 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1974 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
19751962 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
19761963 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
19771964
......@@ -1992,7 +1979,6 @@ test "peer type resolution: empty tuple pointer and slice" {
19921979test "peer type resolution: tuple pointer and slice" {
19931980 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
19941981 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1995 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
19961982 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
19971983 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
19981984
......@@ -2013,7 +1999,6 @@ test "peer type resolution: tuple pointer and slice" {
20131999test "peer type resolution: tuple pointer and optional slice" {
20142000 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
20152001 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2016 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
20172002 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
20182003 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
20192004
......@@ -2034,7 +2019,6 @@ test "peer type resolution: tuple pointer and optional slice" {
20342019test "peer type resolution: many compatible pointers" {
20352020 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
20362021 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2037 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
20382022 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
20392023 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
20402024
......@@ -2100,7 +2084,6 @@ test "peer type resolution: many compatible pointers" {
21002084test "peer type resolution: tuples with comptime fields" {
21012085 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
21022086 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2103 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
21042087 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
21052088 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
21062089
......@@ -2132,7 +2115,6 @@ test "peer type resolution: tuples with comptime fields" {
21322115test "peer type resolution: C pointer and many pointer" {
21332116 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
21342117 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2135 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
21362118 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
21372119 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
21382120
......@@ -2155,7 +2137,6 @@ test "peer type resolution: C pointer and many pointer" {
21552137test "peer type resolution: pointer attributes are combined correctly" {
21562138 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
21572139 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2158 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
21592140 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
21602141 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
21612142
......@@ -2199,7 +2180,6 @@ test "peer type resolution: pointer attributes are combined correctly" {
21992180test "cast builtins can wrap result in optional" {
22002181 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
22012182 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2202 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
22032183 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
22042184 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
22052185
......@@ -2238,7 +2218,6 @@ test "cast builtins can wrap result in optional" {
22382218test "cast builtins can wrap result in error union" {
22392219 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
22402220 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2241 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
22422221 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
22432222
22442223 const S = struct {
......@@ -2277,7 +2256,6 @@ test "cast builtins can wrap result in error union" {
22772256test "cast builtins can wrap result in error union and optional" {
22782257 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
22792258 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
2280 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
22812259 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
22822260 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
22832261
......@@ -2443,7 +2421,6 @@ test "@intFromBool on vector" {
24432421}
24442422
24452423test "numeric coercions with undefined" {
2446 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
24472424 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
24482425 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
24492426
......@@ -2465,7 +2442,6 @@ test "15-bit int to float" {
24652442}
24662443
24672444test "@as does not corrupt values with incompatible representations" {
2468 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
24692445 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
24702446 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
24712447 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
......@@ -2483,7 +2459,6 @@ test "@as does not corrupt values with incompatible representations" {
24832459}
24842460
24852461test "result information is preserved through many nested structures" {
2486 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
24872462 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
24882463 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
24892464 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
test/behavior/int_div.zig-1
......@@ -4,7 +4,6 @@ const expect = std.testing.expect;
44
55test "integer division" {
66 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
7 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
87 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
98 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
109
test/behavior/math.zig-1
......@@ -409,7 +409,6 @@ fn testBinaryNot128(comptime Type: type, x: Type) !void {
409409}
410410
411411test "division" {
412 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
413412 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
414413 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
415414 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
test/behavior/pointers.zig-2
......@@ -190,7 +190,6 @@ test "compare equality of optional and non-optional pointer" {
190190
191191test "allowzero pointer and slice" {
192192 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
193 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
194193 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
195194 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
196195 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
......@@ -347,7 +346,6 @@ test "pointer sentinel with optional element" {
347346test "pointer sentinel with +inf" {
348347 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
349348 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
350 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
351349 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
352350
353351 const S = struct {
test/behavior/struct.zig-3
......@@ -1091,7 +1091,6 @@ test "type coercion of pointer to anon struct literal to pointer to struct" {
10911091
10921092test "packed struct with undefined initializers" {
10931093 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1094 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
10951094 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10961095 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
10971096 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
......@@ -1650,7 +1649,6 @@ test "instantiate struct with comptime field" {
16501649
16511650test "struct field pointer has correct alignment" {
16521651 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
1653 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
16541652 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
16551653 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
16561654 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
......@@ -1682,7 +1680,6 @@ test "struct field pointer has correct alignment" {
16821680
16831681test "extern struct field pointer has correct alignment" {
16841682 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
1685 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
16861683 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
16871684 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
16881685 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
test/behavior/translate_c_macros.zig-7
......@@ -54,7 +54,6 @@ test "reference to a struct type" {
5454}
5555
5656test "cast negative integer to pointer" {
57 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
5857 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
5958 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
6059 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
......@@ -64,7 +63,6 @@ test "cast negative integer to pointer" {
6463}
6564
6665test "casting to union with a macro" {
67 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
6866 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
6967 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
7068 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
......@@ -81,7 +79,6 @@ test "casting to union with a macro" {
8179}
8280
8381test "casting or calling a value with a paren-surrounded macro" {
84 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
8582 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
8683 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
8784 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
......@@ -101,7 +98,6 @@ test "casting or calling a value with a paren-surrounded macro" {
10198}
10299
103100test "nested comma operator" {
104 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
105101 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
106102 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
107103 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
......@@ -112,7 +108,6 @@ test "nested comma operator" {
112108}
113109
114110test "cast functions" {
115 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
116111 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
117112 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
118113 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
......@@ -136,7 +131,6 @@ test "large integer macro" {
136131}
137132
138133test "string literal macro with embedded tab character" {
139 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
140134 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
141135 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
142136 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
......@@ -146,7 +140,6 @@ test "string literal macro with embedded tab character" {
146140}
147141
148142test "string and char literals that are not UTF-8 encoded. Issue #12784" {
149 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
150143 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
151144 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
152145 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
test/behavior/tuple.zig-2
......@@ -379,7 +379,6 @@ test "tuple of struct concatenation and coercion to array" {
379379 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
380380 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
381381 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
382 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
383382 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
384383 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
385384
......@@ -456,7 +455,6 @@ test "coerce anon tuple to tuple" {
456455 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
457456 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
458457 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
459 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
460458
461459 var x: u8 = 1;
462460 var y: u16 = 2;
test/behavior/type.zig-2
......@@ -199,7 +199,6 @@ test "Type.ErrorUnion" {
199199}
200200
201201test "Type.Opaque" {
202 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
203202 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
204203 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
205204 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
......@@ -383,7 +382,6 @@ test "Type.Enum" {
383382}
384383
385384test "Type.Union" {
386 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
387385 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
388386 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
389387 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
test/behavior/union.zig-3
......@@ -1534,7 +1534,6 @@ test "coerce enum literal to union in result loc" {
15341534
15351535test "defined-layout union field pointer has correct alignment" {
15361536 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
1537 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
15381537 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
15391538 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
15401539 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
......@@ -1571,7 +1570,6 @@ test "defined-layout union field pointer has correct alignment" {
15711570
15721571test "undefined-layout union field pointer has correct alignment" {
15731572 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
1574 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
15751573 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
15761574 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
15771575 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
......@@ -1608,7 +1606,6 @@ test "undefined-layout union field pointer has correct alignment" {
16081606
16091607test "packed union field pointer has correct alignment" {
16101608 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
1611 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
16121609 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
16131610 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
16141611 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO