| author | |
| committer | |
| log | b0f031f5730be496872591dce3242004cf9a6f22 |
| tree | cc529312ee13c80a55f21d95ab051cd7f1cd2cea |
| parent | a126afa1c3fe7e39678c201f6470b7899aedd47e |
| parent | 78fe3feedbfa2f86bfbacd1b478a5104092dffeb |
| signature |
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 |
| 3602 | 3602 | return func.cmpBigInt(lhs, rhs, ty, op); |
| 3603 | 3603 | } |
| 3604 | 3604 | |
| 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 | ||
| 3610 | 3605 | const signedness: std.builtin.Signedness = blk: { |
| 3611 | 3606 | // by default we tell the operand type is unsigned (i.e. bools and enum values) |
| 3612 | 3607 | 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 |
| 3614 | 3609 | // incase of an actual integer, we emit the correct signedness |
| 3615 | 3610 | break :blk ty.intInfo(mod).signedness; |
| 3616 | 3611 | }; |
| 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 | ||
| 3617 | 3636 | const opcode: wasm.Opcode = buildOpcode(.{ |
| 3618 | 3637 | .valtype1 = typeToValtype(ty, mod), |
| 3619 | 3638 | .op = switch (op) { |
| ... | ... | @@ -5331,17 +5350,17 @@ fn airAggregateInit(func: *CodeGen, inst: Air.Inst.Index) InnerError!void { |
| 5331 | 5350 | else => { |
| 5332 | 5351 | const result = try func.allocStack(result_ty); |
| 5333 | 5352 | const offset = try func.buildPointerOffset(result, 0, .new); // pointer to offset |
| 5353 | var prev_field_offset: u64 = 0; | |
| 5334 | 5354 | for (elements, 0..) |elem, elem_index| { |
| 5335 | 5355 | if ((try result_ty.structFieldValueComptime(mod, elem_index)) != null) continue; |
| 5336 | 5356 | |
| 5337 | 5357 | 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 | ||
| 5339 | 5362 | const value = try func.resolveInst(elem); |
| 5340 | 5363 | 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 | } | |
| 5345 | 5364 | } |
| 5346 | 5365 | |
| 5347 | 5366 | break :result_value result; |
| ... | ... | @@ -6920,12 +6939,13 @@ fn signedSat(func: *CodeGen, lhs_operand: WValue, rhs_operand: WValue, ty: Type, |
| 6920 | 6939 | const int_info = ty.intInfo(mod); |
| 6921 | 6940 | const wasm_bits = toWasmBits(int_info.bits).?; |
| 6922 | 6941 | 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; | |
| 6923 | 6943 | |
| 6924 | 6944 | 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); | |
| 6926 | 6946 | } else lhs_operand; |
| 6927 | 6947 | 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); | |
| 6929 | 6949 | } else rhs_operand; |
| 6930 | 6950 | |
| 6931 | 6951 | 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, |
| 6941 | 6961 | else => unreachable, |
| 6942 | 6962 | }; |
| 6943 | 6963 | |
| 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); | |
| 6945 | 6965 | if (!is_wasm_bits) { |
| 6946 | 6966 | defer bin_result.free(func); // not returned in this branch |
| 6947 | 6967 | defer lhs.free(func); // uses temporary local for absvalue |
| 6948 | 6968 | defer rhs.free(func); // uses temporary local for absvalue |
| 6949 | 6969 | try func.emitWValue(bin_result); |
| 6950 | 6970 | 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); | |
| 6952 | 6972 | try func.addTag(.select); |
| 6953 | 6973 | try func.addLabel(.local_set, bin_result.local.value); // re-use local |
| 6954 | 6974 | |
| 6955 | 6975 | try func.emitWValue(bin_result); |
| 6956 | 6976 | 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); | |
| 6958 | 6978 | try func.addTag(.select); |
| 6959 | 6979 | try func.addLabel(.local_set, bin_result.local.value); // re-use local |
| 6960 | 6980 | return (try func.wrapOperand(bin_result, ty)).toLocal(func, ty); |
| ... | ... | @@ -7036,12 +7056,13 @@ fn airShlSat(func: *CodeGen, inst: Air.Inst.Index) InnerError!void { |
| 7036 | 7056 | 64 => WValue{ .imm64 = shift_size }, |
| 7037 | 7057 | else => unreachable, |
| 7038 | 7058 | }; |
| 7059 | const ext_ty = try mod.intType(int_info.signedness, wasm_bits); | |
| 7039 | 7060 | |
| 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); | |
| 7041 | 7062 | 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); | |
| 7043 | 7064 | 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); | |
| 7045 | 7066 | defer shr.free(func); |
| 7046 | 7067 | |
| 7047 | 7068 | switch (wasm_bits) { |
| ... | ... | @@ -7053,7 +7074,7 @@ fn airShlSat(func: *CodeGen, inst: Air.Inst.Index) InnerError!void { |
| 7053 | 7074 | |
| 7054 | 7075 | try func.addImm32(std.math.minInt(i32)); |
| 7055 | 7076 | 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); | |
| 7057 | 7078 | try func.addTag(.select); |
| 7058 | 7079 | }, |
| 7059 | 7080 | 64 => blk: { |
| ... | ... | @@ -7064,16 +7085,16 @@ fn airShlSat(func: *CodeGen, inst: Air.Inst.Index) InnerError!void { |
| 7064 | 7085 | |
| 7065 | 7086 | try func.addImm64(@as(u64, @bitCast(@as(i64, std.math.minInt(i64))))); |
| 7066 | 7087 | 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); | |
| 7068 | 7089 | try func.addTag(.select); |
| 7069 | 7090 | }, |
| 7070 | 7091 | else => unreachable, |
| 7071 | 7092 | } |
| 7072 | 7093 | try func.emitWValue(shl); |
| 7073 | _ = try func.cmp(shl_res, shr, ty, .neq); | |
| 7094 | _ = try func.cmp(shl_res, shr, ext_ty, .neq); | |
| 7074 | 7095 | try func.addTag(.select); |
| 7075 | 7096 | 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); | |
| 7077 | 7098 | if (is_signed) { |
| 7078 | 7099 | shift_result = try func.wrapOperand(shift_result, ty); |
| 7079 | 7100 | } |
test/behavior/align.zig-1| ... | ... | @@ -571,7 +571,6 @@ fn overaligned_fn() align(0x1000) i32 { |
| 571 | 571 | test "comptime alloc alignment" { |
| 572 | 572 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 573 | 573 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 574 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 575 | 574 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 576 | 575 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 577 | 576 |
test/behavior/basic.zig+48-2| ... | ... | @@ -38,7 +38,6 @@ test "truncate to non-power-of-two integers" { |
| 38 | 38 | } |
| 39 | 39 | |
| 40 | 40 | test "truncate to non-power-of-two integers from 128-bit" { |
| 41 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 42 | 41 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 43 | 42 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 44 | 43 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| ... | ... | @@ -398,7 +397,6 @@ test "array 2D const double ptr" { |
| 398 | 397 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; |
| 399 | 398 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 400 | 399 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |
| 401 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 402 | 400 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 403 | 401 | |
| 404 | 402 | const rect_2d_vertexes = [_][1]f32{ |
| ... | ... | @@ -1172,3 +1170,51 @@ test "pointer to struct literal with runtime field is constant" { |
| 1172 | 1170 | const ptr = &S{ .data = runtime_zero }; |
| 1173 | 1171 | try expect(@typeInfo(@TypeOf(ptr)).Pointer.is_const); |
| 1174 | 1172 | } |
| 1173 | ||
| 1174 | test "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"); |
| 3 | 3 | const expectEqualStrings = std.testing.expectEqualStrings; |
| 4 | 4 | |
| 5 | 5 | test "slicing slices" { |
| 6 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 7 | 6 | if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO |
| 8 | 7 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 9 | 8 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
test/behavior/bugs/11787.zig-1| ... | ... | @@ -3,7 +3,6 @@ const builtin = @import("builtin"); |
| 3 | 3 | const testing = std.testing; |
| 4 | 4 | |
| 5 | 5 | test "slicing zero length array field of struct" { |
| 6 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 7 | 6 | if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO |
| 8 | 7 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 9 | 8 | 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 { |
| 17 | 17 | len: usize, |
| 18 | 18 | }; |
| 19 | 19 | test { |
| 20 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 21 | 20 | if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO |
| 22 | 21 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 23 | 22 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
test/behavior/bugs/12000.zig-1| ... | ... | @@ -6,7 +6,6 @@ const T = struct { |
| 6 | 6 | }; |
| 7 | 7 | |
| 8 | 8 | test { |
| 9 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 10 | 9 | if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO |
| 11 | 10 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 12 | 11 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
test/behavior/bugs/12051.zig-1| ... | ... | @@ -2,7 +2,6 @@ const std = @import("std"); |
| 2 | 2 | const builtin = @import("builtin"); |
| 3 | 3 | |
| 4 | 4 | test { |
| 5 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 6 | 5 | if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO |
| 7 | 6 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 8 | 7 | 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 { |
| 14 | 14 | } |
| 15 | 15 | |
| 16 | 16 | test { |
| 17 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 18 | 17 | if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO |
| 19 | 18 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 20 | 19 | 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); |
| 5 | 5 | const u32x8 = @Vector(8, u32); |
| 6 | 6 | |
| 7 | 7 | test { |
| 8 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 9 | 8 | if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO |
| 10 | 9 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 11 | 10 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
test/behavior/bugs/12450.zig-1| ... | ... | @@ -9,7 +9,6 @@ const Foo = packed struct { |
| 9 | 9 | var buffer: [256]u8 = undefined; |
| 10 | 10 | |
| 11 | 11 | test { |
| 12 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 13 | 12 | if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO |
| 14 | 13 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 15 | 14 | 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; |
| 8 | 8 | test "export a function twice" { |
| 9 | 9 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; |
| 10 | 10 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |
| 11 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; | |
| 12 | 11 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 13 | 12 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 14 | 13 | 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); |
| 7 | 7 | test { |
| 8 | 8 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 9 | 9 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 10 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 11 | 10 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 12 | 11 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 13 | 12 |
test/behavior/bugs/13366.zig-1| ... | ... | @@ -13,7 +13,6 @@ const Block = struct { |
| 13 | 13 | }; |
| 14 | 14 | |
| 15 | 15 | test { |
| 16 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 17 | 16 | if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO |
| 18 | 17 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 19 | 18 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
test/behavior/bugs/1741.zig-1| ... | ... | @@ -2,7 +2,6 @@ const std = @import("std"); |
| 2 | 2 | const builtin = @import("builtin"); |
| 3 | 3 | |
| 4 | 4 | test "fixed" { |
| 5 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 6 | 5 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 7 | 6 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 8 | 7 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
test/behavior/bugs/1851.zig-1| ... | ... | @@ -3,7 +3,6 @@ const std = @import("std"); |
| 3 | 3 | const expect = std.testing.expect; |
| 4 | 4 | |
| 5 | 5 | test "allocation and looping over 3-byte integer" { |
| 6 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 7 | 6 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 8 | 7 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 9 | 8 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
test/behavior/bugs/2622.zig-1| ... | ... | @@ -3,7 +3,6 @@ const builtin = @import("builtin"); |
| 3 | 3 | var buf: []u8 = undefined; |
| 4 | 4 | |
| 5 | 5 | test "reslice of undefined global var slice" { |
| 6 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 7 | 6 | if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO |
| 8 | 7 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 9 | 8 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
test/behavior/bugs/2727.zig-1| ... | ... | @@ -5,7 +5,6 @@ fn t() bool { |
| 5 | 5 | } |
| 6 | 6 | |
| 7 | 7 | test { |
| 8 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 9 | 8 | if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO |
| 10 | 9 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 11 | 10 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
test/behavior/bugs/6047.zig-1| ... | ... | @@ -10,7 +10,6 @@ fn getError2() !void { |
| 10 | 10 | } |
| 11 | 11 | |
| 12 | 12 | test "`try`ing an if/else expression" { |
| 13 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 14 | 13 | if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO |
| 15 | 14 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 16 | 15 | 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; |
| 2 | 2 | const builtin = @import("builtin"); |
| 3 | 3 | |
| 4 | 4 | test "sentinel-terminated 0-length slices" { |
| 5 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 6 | 5 | if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO |
| 7 | 6 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 8 | 7 | 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 { |
| 5 | 5 | } |
| 6 | 6 | |
| 7 | 7 | test { |
| 8 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 9 | 8 | if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO |
| 10 | 9 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 11 | 10 | 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 { |
| 78 | 78 | } |
| 79 | 79 | |
| 80 | 80 | test { |
| 81 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 82 | 81 | if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO |
| 83 | 82 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 84 | 83 | 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{ |
| 7 | 7 | }; |
| 8 | 8 | |
| 9 | 9 | test { |
| 10 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 11 | 10 | if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO |
| 12 | 11 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 13 | 12 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
test/behavior/bugs/920.zig-1| ... | ... | @@ -57,7 +57,6 @@ const NormalDist = blk: { |
| 57 | 57 | }; |
| 58 | 58 | |
| 59 | 59 | test "bug 920 fixed" { |
| 60 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 61 | 60 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 62 | 61 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 63 | 62 | 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" { |
| 1544 | 1544 | |
| 1545 | 1545 | test "bitcast packed struct with u0" { |
| 1546 | 1546 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 1547 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 1548 | 1547 | |
| 1549 | 1548 | const S = packed struct(u2) { a: u0, b: u2 }; |
| 1550 | 1549 | const s = @as(S, @bitCast(@as(u2, 2))); |
| ... | ... | @@ -1572,7 +1571,6 @@ test "single item pointer to pointer to array to slice" { |
| 1572 | 1571 | } |
| 1573 | 1572 | |
| 1574 | 1573 | test "peer type resolution forms error union" { |
| 1575 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 1576 | 1574 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 1577 | 1575 | |
| 1578 | 1576 | var foo: i32 = 123; |
| ... | ... | @@ -1611,7 +1609,6 @@ test "coercion from single-item pointer to @as to slice" { |
| 1611 | 1609 | test "peer type resolution: const sentinel slice and mutable non-sentinel slice" { |
| 1612 | 1610 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 1613 | 1611 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1614 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 1615 | 1612 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 1616 | 1613 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO |
| 1617 | 1614 | |
| ... | ... | @@ -1641,7 +1638,6 @@ test "peer type resolution: float and comptime-known fixed-width integer" { |
| 1641 | 1638 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 1642 | 1639 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1643 | 1640 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 1644 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 1645 | 1641 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 1646 | 1642 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO |
| 1647 | 1643 | |
| ... | ... | @@ -1663,7 +1659,6 @@ test "peer type resolution: float and comptime-known fixed-width integer" { |
| 1663 | 1659 | test "peer type resolution: same array type with sentinel" { |
| 1664 | 1660 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 1665 | 1661 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1666 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 1667 | 1662 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 1668 | 1663 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO |
| 1669 | 1664 | |
| ... | ... | @@ -1685,7 +1680,6 @@ test "peer type resolution: same array type with sentinel" { |
| 1685 | 1680 | test "peer type resolution: array with sentinel and array without sentinel" { |
| 1686 | 1681 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 1687 | 1682 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1688 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 1689 | 1683 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 1690 | 1684 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO |
| 1691 | 1685 | |
| ... | ... | @@ -1707,7 +1701,6 @@ test "peer type resolution: array with sentinel and array without sentinel" { |
| 1707 | 1701 | test "peer type resolution: array and vector with same child type" { |
| 1708 | 1702 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 1709 | 1703 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1710 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 1711 | 1704 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 1712 | 1705 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO |
| 1713 | 1706 | |
| ... | ... | @@ -1752,7 +1745,6 @@ test "peer type resolution: array with smaller child type and vector with larger |
| 1752 | 1745 | test "peer type resolution: error union and optional of same type" { |
| 1753 | 1746 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 1754 | 1747 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1755 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 1756 | 1748 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 1757 | 1749 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO |
| 1758 | 1750 | |
| ... | ... | @@ -1775,7 +1767,6 @@ test "peer type resolution: error union and optional of same type" { |
| 1775 | 1767 | test "peer type resolution: C pointer and @TypeOf(null)" { |
| 1776 | 1768 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 1777 | 1769 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1778 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 1779 | 1770 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 1780 | 1771 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO |
| 1781 | 1772 | |
| ... | ... | @@ -1797,7 +1788,6 @@ test "peer type resolution: C pointer and @TypeOf(null)" { |
| 1797 | 1788 | test "peer type resolution: three-way resolution combines error set and optional" { |
| 1798 | 1789 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 1799 | 1790 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1800 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 1801 | 1791 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 1802 | 1792 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO |
| 1803 | 1793 | |
| ... | ... | @@ -1861,7 +1851,6 @@ test "peer type resolution: vector and optional vector" { |
| 1861 | 1851 | test "peer type resolution: optional fixed-width int and comptime_int" { |
| 1862 | 1852 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 1863 | 1853 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1864 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 1865 | 1854 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 1866 | 1855 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO |
| 1867 | 1856 | |
| ... | ... | @@ -1883,7 +1872,6 @@ test "peer type resolution: optional fixed-width int and comptime_int" { |
| 1883 | 1872 | test "peer type resolution: array and tuple" { |
| 1884 | 1873 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 1885 | 1874 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1886 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 1887 | 1875 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 1888 | 1876 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO |
| 1889 | 1877 | |
| ... | ... | @@ -1971,7 +1959,6 @@ test "peer type resolution: vector and array and tuple" { |
| 1971 | 1959 | test "peer type resolution: empty tuple pointer and slice" { |
| 1972 | 1960 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 1973 | 1961 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1974 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 1975 | 1962 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 1976 | 1963 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO |
| 1977 | 1964 | |
| ... | ... | @@ -1992,7 +1979,6 @@ test "peer type resolution: empty tuple pointer and slice" { |
| 1992 | 1979 | test "peer type resolution: tuple pointer and slice" { |
| 1993 | 1980 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 1994 | 1981 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1995 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 1996 | 1982 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 1997 | 1983 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO |
| 1998 | 1984 | |
| ... | ... | @@ -2013,7 +1999,6 @@ test "peer type resolution: tuple pointer and slice" { |
| 2013 | 1999 | test "peer type resolution: tuple pointer and optional slice" { |
| 2014 | 2000 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 2015 | 2001 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 2016 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 2017 | 2002 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 2018 | 2003 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO |
| 2019 | 2004 | |
| ... | ... | @@ -2034,7 +2019,6 @@ test "peer type resolution: tuple pointer and optional slice" { |
| 2034 | 2019 | test "peer type resolution: many compatible pointers" { |
| 2035 | 2020 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 2036 | 2021 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 2037 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 2038 | 2022 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 2039 | 2023 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO |
| 2040 | 2024 | |
| ... | ... | @@ -2100,7 +2084,6 @@ test "peer type resolution: many compatible pointers" { |
| 2100 | 2084 | test "peer type resolution: tuples with comptime fields" { |
| 2101 | 2085 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 2102 | 2086 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 2103 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 2104 | 2087 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 2105 | 2088 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO |
| 2106 | 2089 | |
| ... | ... | @@ -2132,7 +2115,6 @@ test "peer type resolution: tuples with comptime fields" { |
| 2132 | 2115 | test "peer type resolution: C pointer and many pointer" { |
| 2133 | 2116 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 2134 | 2117 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 2135 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 2136 | 2118 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 2137 | 2119 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO |
| 2138 | 2120 | |
| ... | ... | @@ -2155,7 +2137,6 @@ test "peer type resolution: C pointer and many pointer" { |
| 2155 | 2137 | test "peer type resolution: pointer attributes are combined correctly" { |
| 2156 | 2138 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 2157 | 2139 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 2158 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 2159 | 2140 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 2160 | 2141 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO |
| 2161 | 2142 | |
| ... | ... | @@ -2199,7 +2180,6 @@ test "peer type resolution: pointer attributes are combined correctly" { |
| 2199 | 2180 | test "cast builtins can wrap result in optional" { |
| 2200 | 2181 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 2201 | 2182 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 2202 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 2203 | 2183 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 2204 | 2184 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO |
| 2205 | 2185 | |
| ... | ... | @@ -2238,7 +2218,6 @@ test "cast builtins can wrap result in optional" { |
| 2238 | 2218 | test "cast builtins can wrap result in error union" { |
| 2239 | 2219 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 2240 | 2220 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 2241 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 2242 | 2221 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 2243 | 2222 | |
| 2244 | 2223 | const S = struct { |
| ... | ... | @@ -2277,7 +2256,6 @@ test "cast builtins can wrap result in error union" { |
| 2277 | 2256 | test "cast builtins can wrap result in error union and optional" { |
| 2278 | 2257 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 2279 | 2258 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 2280 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 2281 | 2259 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 2282 | 2260 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO |
| 2283 | 2261 | |
| ... | ... | @@ -2443,7 +2421,6 @@ test "@intFromBool on vector" { |
| 2443 | 2421 | } |
| 2444 | 2422 | |
| 2445 | 2423 | test "numeric coercions with undefined" { |
| 2446 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; | |
| 2447 | 2424 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; |
| 2448 | 2425 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 2449 | 2426 | |
| ... | ... | @@ -2465,7 +2442,6 @@ test "15-bit int to float" { |
| 2465 | 2442 | } |
| 2466 | 2443 | |
| 2467 | 2444 | test "@as does not corrupt values with incompatible representations" { |
| 2468 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 2469 | 2445 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 2470 | 2446 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 2471 | 2447 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| ... | ... | @@ -2483,7 +2459,6 @@ test "@as does not corrupt values with incompatible representations" { |
| 2483 | 2459 | } |
| 2484 | 2460 | |
| 2485 | 2461 | test "result information is preserved through many nested structures" { |
| 2486 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 2487 | 2462 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 2488 | 2463 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 2489 | 2464 | 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; |
| 4 | 4 | |
| 5 | 5 | test "integer division" { |
| 6 | 6 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; |
| 7 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; | |
| 8 | 7 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |
| 9 | 8 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 10 | 9 |
test/behavior/math.zig-1| ... | ... | @@ -409,7 +409,6 @@ fn testBinaryNot128(comptime Type: type, x: Type) !void { |
| 409 | 409 | } |
| 410 | 410 | |
| 411 | 411 | test "division" { |
| 412 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 413 | 412 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 414 | 413 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 415 | 414 | 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" { |
| 190 | 190 | |
| 191 | 191 | test "allowzero pointer and slice" { |
| 192 | 192 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 193 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 194 | 193 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |
| 195 | 194 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 196 | 195 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| ... | ... | @@ -347,7 +346,6 @@ test "pointer sentinel with optional element" { |
| 347 | 346 | test "pointer sentinel with +inf" { |
| 348 | 347 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; |
| 349 | 348 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 350 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 351 | 349 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 352 | 350 | |
| 353 | 351 | 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" { |
| 1091 | 1091 | |
| 1092 | 1092 | test "packed struct with undefined initializers" { |
| 1093 | 1093 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; |
| 1094 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 1095 | 1094 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1096 | 1095 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 1097 | 1096 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| ... | ... | @@ -1650,7 +1649,6 @@ test "instantiate struct with comptime field" { |
| 1650 | 1649 | |
| 1651 | 1650 | test "struct field pointer has correct alignment" { |
| 1652 | 1651 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 1653 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 1654 | 1652 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1655 | 1653 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 1656 | 1654 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| ... | ... | @@ -1682,7 +1680,6 @@ test "struct field pointer has correct alignment" { |
| 1682 | 1680 | |
| 1683 | 1681 | test "extern struct field pointer has correct alignment" { |
| 1684 | 1682 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 1685 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 1686 | 1683 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1687 | 1684 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 1688 | 1685 | 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" { |
| 54 | 54 | } |
| 55 | 55 | |
| 56 | 56 | test "cast negative integer to pointer" { |
| 57 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 58 | 57 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 59 | 58 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 60 | 59 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| ... | ... | @@ -64,7 +63,6 @@ test "cast negative integer to pointer" { |
| 64 | 63 | } |
| 65 | 64 | |
| 66 | 65 | test "casting to union with a macro" { |
| 67 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 68 | 66 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 69 | 67 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 70 | 68 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| ... | ... | @@ -81,7 +79,6 @@ test "casting to union with a macro" { |
| 81 | 79 | } |
| 82 | 80 | |
| 83 | 81 | test "casting or calling a value with a paren-surrounded macro" { |
| 84 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 85 | 82 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 86 | 83 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 87 | 84 | 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" { |
| 101 | 98 | } |
| 102 | 99 | |
| 103 | 100 | test "nested comma operator" { |
| 104 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 105 | 101 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 106 | 102 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 107 | 103 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| ... | ... | @@ -112,7 +108,6 @@ test "nested comma operator" { |
| 112 | 108 | } |
| 113 | 109 | |
| 114 | 110 | test "cast functions" { |
| 115 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 116 | 111 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 117 | 112 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 118 | 113 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| ... | ... | @@ -136,7 +131,6 @@ test "large integer macro" { |
| 136 | 131 | } |
| 137 | 132 | |
| 138 | 133 | test "string literal macro with embedded tab character" { |
| 139 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 140 | 134 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 141 | 135 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 142 | 136 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| ... | ... | @@ -146,7 +140,6 @@ test "string literal macro with embedded tab character" { |
| 146 | 140 | } |
| 147 | 141 | |
| 148 | 142 | test "string and char literals that are not UTF-8 encoded. Issue #12784" { |
| 149 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 150 | 143 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 151 | 144 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 152 | 145 | 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" { |
| 379 | 379 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; |
| 380 | 380 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |
| 381 | 381 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; |
| 382 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; | |
| 383 | 382 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 384 | 383 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 385 | 384 | |
| ... | ... | @@ -456,7 +455,6 @@ test "coerce anon tuple to tuple" { |
| 456 | 455 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 457 | 456 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 458 | 457 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO |
| 459 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; | |
| 460 | 458 | |
| 461 | 459 | var x: u8 = 1; |
| 462 | 460 | var y: u16 = 2; |
test/behavior/type.zig-2| ... | ... | @@ -199,7 +199,6 @@ test "Type.ErrorUnion" { |
| 199 | 199 | } |
| 200 | 200 | |
| 201 | 201 | test "Type.Opaque" { |
| 202 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 203 | 202 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 204 | 203 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 205 | 204 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| ... | ... | @@ -383,7 +382,6 @@ test "Type.Enum" { |
| 383 | 382 | } |
| 384 | 383 | |
| 385 | 384 | test "Type.Union" { |
| 386 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 387 | 385 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 388 | 386 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 389 | 387 | 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" { |
| 1534 | 1534 | |
| 1535 | 1535 | test "defined-layout union field pointer has correct alignment" { |
| 1536 | 1536 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 1537 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 1538 | 1537 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1539 | 1538 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 1540 | 1539 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| ... | ... | @@ -1571,7 +1570,6 @@ test "defined-layout union field pointer has correct alignment" { |
| 1571 | 1570 | |
| 1572 | 1571 | test "undefined-layout union field pointer has correct alignment" { |
| 1573 | 1572 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 1574 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 1575 | 1573 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1576 | 1574 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 1577 | 1575 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| ... | ... | @@ -1608,7 +1606,6 @@ test "undefined-layout union field pointer has correct alignment" { |
| 1608 | 1606 | |
| 1609 | 1607 | test "packed union field pointer has correct alignment" { |
| 1610 | 1608 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 1611 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO | |
| 1612 | 1609 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 1613 | 1610 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 1614 | 1611 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |