diff --git a/src/arch/wasm/Emit.zig b/src/arch/wasm/Emit.zig index d8539a5959114132604272b6c01698b4efadaddb..e0b40794b84732c48ff0d65984c719b7ccd6ffcc 100644 --- a/src/arch/wasm/Emit.zig +++ b/src/arch/wasm/Emit.zig @@ -153,6 +153,34 @@ pub fn emitMir(emit: *Emit) InnerError!void { .i64_shl => try emit.emitTag(tag), .i64_shr_s => try emit.emitTag(tag), .i64_shr_u => try emit.emitTag(tag), + .f32_abs => try emit.emitTag(tag), + .f32_neg => try emit.emitTag(tag), + .f32_ceil => try emit.emitTag(tag), + .f32_floor => try emit.emitTag(tag), + .f32_trunc => try emit.emitTag(tag), + .f32_nearest => try emit.emitTag(tag), + .f32_sqrt => try emit.emitTag(tag), + .f32_add => try emit.emitTag(tag), + .f32_sub => try emit.emitTag(tag), + .f32_mul => try emit.emitTag(tag), + .f32_div => try emit.emitTag(tag), + .f32_min => try emit.emitTag(tag), + .f32_max => try emit.emitTag(tag), + .f32_copysign => try emit.emitTag(tag), + .f64_abs => try emit.emitTag(tag), + .f64_neg => try emit.emitTag(tag), + .f64_ceil => try emit.emitTag(tag), + .f64_floor => try emit.emitTag(tag), + .f64_trunc => try emit.emitTag(tag), + .f64_nearest => try emit.emitTag(tag), + .f64_sqrt => try emit.emitTag(tag), + .f64_add => try emit.emitTag(tag), + .f64_sub => try emit.emitTag(tag), + .f64_mul => try emit.emitTag(tag), + .f64_div => try emit.emitTag(tag), + .f64_min => try emit.emitTag(tag), + .f64_max => try emit.emitTag(tag), + .f64_copysign => try emit.emitTag(tag), .i32_wrap_i64 => try emit.emitTag(tag), .i64_extend_i32_s => try emit.emitTag(tag), .i64_extend_i32_u => try emit.emitTag(tag), diff --git a/src/arch/wasm/Mir.zig b/src/arch/wasm/Mir.zig index d5d45142dec093d40b5e9fe3d1887a6ca3f034e2..b24af64ff5720dc71bd76f01cafa4e9d7a724f08 100644 --- a/src/arch/wasm/Mir.zig +++ b/src/arch/wasm/Mir.zig @@ -369,6 +369,62 @@ pub const Inst = struct { /// Uses `tag` i64_shr_u = 0x88, /// Uses `tag` + f32_abs = 0x8B, + /// Uses `tag` + f32_neg = 0x8C, + /// Uses `tag` + f32_ceil = 0x8D, + /// Uses `tag` + f32_floor = 0x8E, + /// Uses `tag` + f32_trunc = 0x8F, + /// Uses `tag` + f32_nearest = 0x90, + /// Uses `tag` + f32_sqrt = 0x91, + /// Uses `tag` + f32_add = 0x92, + /// Uses `tag` + f32_sub = 0x93, + /// Uses `tag` + f32_mul = 0x94, + /// Uses `tag` + f32_div = 0x95, + /// Uses `tag` + f32_min = 0x96, + /// Uses `tag` + f32_max = 0x97, + /// Uses `tag` + f32_copysign = 0x98, + /// Uses `tag` + f64_abs = 0x99, + /// Uses `tag` + f64_neg = 0x9A, + /// Uses `tag` + f64_ceil = 0x9B, + /// Uses `tag` + f64_floor = 0x9C, + /// Uses `tag` + f64_trunc = 0x9D, + /// Uses `tag` + f64_nearest = 0x9E, + /// Uses `tag` + f64_sqrt = 0x9F, + /// Uses `tag` + f64_add = 0xA0, + /// Uses `tag` + f64_sub = 0xA1, + /// Uses `tag` + f64_mul = 0xA2, + /// Uses `tag` + f64_div = 0xA3, + /// Uses `tag` + f64_min = 0xA4, + /// Uses `tag` + f64_max = 0xA5, + /// Uses `tag` + f64_copysign = 0xA6, + /// Uses `tag` i32_wrap_i64 = 0xA7, /// Uses `tag` i32_trunc_f32_s = 0xA8, diff --git a/test/behavior.zig b/test/behavior.zig index eedbd257fabb6ac64db13f3edd042fee8bd4ea8f..44187b3673490f42b8f68cacfbfcc19057f4b07b 100644 --- a/test/behavior.zig +++ b/test/behavior.zig @@ -18,14 +18,19 @@ test { _ = @import("behavior/bugs/679.zig"); _ = @import("behavior/bugs/704.zig"); _ = @import("behavior/bugs/718.zig"); + _ = @import("behavior/bugs/726.zig"); + _ = @import("behavior/bugs/828.zig"); _ = @import("behavior/bugs/1025.zig"); _ = @import("behavior/bugs/1076.zig"); _ = @import("behavior/bugs/1111.zig"); _ = @import("behavior/bugs/1277.zig"); _ = @import("behavior/bugs/1310.zig"); _ = @import("behavior/bugs/1381.zig"); + _ = @import("behavior/bugs/1421.zig"); + _ = @import("behavior/bugs/1442.zig"); _ = @import("behavior/bugs/1486.zig"); _ = @import("behavior/bugs/1500.zig"); + _ = @import("behavior/bugs/1607.zig"); _ = @import("behavior/bugs/1735.zig"); _ = @import("behavior/bugs/1741.zig"); _ = @import("behavior/bugs/1914.zig"); @@ -38,25 +43,34 @@ test { _ = @import("behavior/bugs/3046.zig"); _ = @import("behavior/bugs/3112.zig"); _ = @import("behavior/bugs/3367.zig"); + _ = @import("behavior/bugs/3384.zig"); _ = @import("behavior/bugs/3586.zig"); + _ = @import("behavior/bugs/3742.zig"); _ = @import("behavior/bugs/4328.zig"); _ = @import("behavior/bugs/4560.zig"); _ = @import("behavior/bugs/4769_a.zig"); _ = @import("behavior/bugs/4769_b.zig"); _ = @import("behavior/bugs/4954.zig"); + _ = @import("behavior/bugs/5398.zig"); + _ = @import("behavior/bugs/5413.zig"); + _ = @import("behavior/bugs/5474.zig"); + _ = @import("behavior/bugs/5487.zig"); _ = @import("behavior/bugs/6850.zig"); + _ = @import("behavior/bugs/7003.zig"); _ = @import("behavior/bugs/7250.zig"); _ = @import("behavior/bugs/11100.zig"); + _ = @import("behavior/bugs/10970.zig"); _ = @import("behavior/call.zig"); _ = @import("behavior/cast.zig"); _ = @import("behavior/comptime_memory.zig"); _ = @import("behavior/defer.zig"); _ = @import("behavior/enum.zig"); _ = @import("behavior/error.zig"); + _ = @import("behavior/field_parent_ptr.zig"); _ = @import("behavior/floatop.zig"); - _ = @import("behavior/fn.zig"); _ = @import("behavior/fn_delegation.zig"); _ = @import("behavior/fn_in_struct_in_comptime.zig"); + _ = @import("behavior/fn.zig"); _ = @import("behavior/for.zig"); _ = @import("behavior/generics.zig"); _ = @import("behavior/hasdecl.zig"); @@ -69,6 +83,7 @@ test { _ = @import("behavior/ir_block_deps.zig"); _ = @import("behavior/math.zig"); _ = @import("behavior/member_func.zig"); + _ = @import("behavior/merge_error_sets.zig"); _ = @import("behavior/muladd.zig"); _ = @import("behavior/namespace_depends_on_compile_var.zig"); _ = @import("behavior/null.zig"); @@ -79,10 +94,14 @@ test { _ = @import("behavior/pub_enum.zig"); _ = @import("behavior/ref_var_in_if_after_if_2nd_switch_prong.zig"); _ = @import("behavior/reflection.zig"); - _ = @import("behavior/slice.zig"); + _ = @import("behavior/sizeof_and_typeof.zig"); _ = @import("behavior/slice_sentinel_comptime.zig"); + _ = @import("behavior/slice.zig"); _ = @import("behavior/src.zig"); + _ = @import("behavior/struct_contains_null_ptr_itself.zig"); _ = @import("behavior/struct.zig"); + _ = @import("behavior/switch_prong_err_enum.zig"); + _ = @import("behavior/switch_prong_implicit_cast.zig"); _ = @import("behavior/switch.zig"); _ = @import("behavior/this.zig"); _ = @import("behavior/truncate.zig"); @@ -113,22 +132,11 @@ test { { // Tests that pass for stage1, llvm backend, C backend _ = @import("behavior/bugs/421.zig"); - _ = @import("behavior/bugs/726.zig"); - _ = @import("behavior/bugs/828.zig"); - _ = @import("behavior/bugs/1421.zig"); - _ = @import("behavior/bugs/1607.zig"); - _ = @import("behavior/bugs/3384.zig"); - _ = @import("behavior/bugs/5398.zig"); - _ = @import("behavior/bugs/5413.zig"); - _ = @import("behavior/bugs/5474.zig"); - _ = @import("behavior/bugs/7003.zig"); _ = @import("behavior/bugs/9584.zig"); - _ = @import("behavior/bugs/10970.zig"); _ = @import("behavior/cast_int.zig"); _ = @import("behavior/eval.zig"); _ = @import("behavior/export_self_referential_type_info.zig"); _ = @import("behavior/int128.zig"); - _ = @import("behavior/merge_error_sets.zig"); _ = @import("behavior/translate_c_macros.zig"); if (builtin.zig_backend != .stage2_c) { @@ -137,17 +145,9 @@ test { _ = @import("behavior/maximum_minimum.zig"); _ = @import("behavior/popcount.zig"); _ = @import("behavior/saturating_arithmetic.zig"); - _ = @import("behavior/sizeof_and_typeof.zig"); _ = @import("behavior/widening.zig"); - _ = @import("behavior/bugs/1442.zig"); _ = @import("behavior/bugs/2114.zig"); - _ = @import("behavior/bugs/3742.zig"); - _ = @import("behavior/bugs/5487.zig"); - _ = @import("behavior/struct_contains_null_ptr_itself.zig"); - _ = @import("behavior/switch_prong_err_enum.zig"); - _ = @import("behavior/switch_prong_implicit_cast.zig"); _ = @import("behavior/union_with_members.zig"); - _ = @import("behavior/field_parent_ptr.zig"); if (builtin.zig_backend == .stage1) { // Tests that only pass for the stage1 backend. diff --git a/test/behavior/align.zig b/test/behavior/align.zig index e4c497984c85cd1a9aa0afaf074d3c53717584b1..54ebb3326ce3b027fa64ec1f0ea3fab63fce45a4 100644 --- a/test/behavior/align.zig +++ b/test/behavior/align.zig @@ -158,7 +158,6 @@ fn give() anyerror!u128 { test "page aligned array on stack" { if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; - if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; @@ -359,7 +358,6 @@ test "read 128-bit field from default aligned struct in global memory" { test "struct field explicit alignment" { if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest; - if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; @@ -411,7 +409,6 @@ test "align(N) on functions" { if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; if (builtin.zig_backend == .stage1) return error.SkipZigTest; if (builtin.zig_backend == .stage2_llvm) return error.SkipZigTest; - if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; diff --git a/test/behavior/bugs/10970.zig b/test/behavior/bugs/10970.zig index 1a078656d96f95df41bfabc5c13856a03c284d0d..4f33d3d7a4bbb7ac4f0af1000fdbb6b5973680ac 100644 --- a/test/behavior/bugs/10970.zig +++ b/test/behavior/bugs/10970.zig @@ -4,6 +4,10 @@ fn retOpt() ?u32 { return null; } test { + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; var cond = true; const opt = while (cond) { if (retOpt()) |opt| { diff --git a/test/behavior/bugs/1421.zig b/test/behavior/bugs/1421.zig index 960e3174a26b800f3c36f8a192cd5f3fec7b07da..e8aceeecaf4714934c262f3e3d5d08087be83a0f 100644 --- a/test/behavior/bugs/1421.zig +++ b/test/behavior/bugs/1421.zig @@ -1,5 +1,6 @@ const std = @import("std"); const expect = std.testing.expect; +const builtin = @import("builtin"); const S = struct { fn method() std.builtin.Type { @@ -8,6 +9,10 @@ const S = struct { }; test "functions with return type required to be comptime are generic" { + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; const ti = S.method(); try expect(@as(std.builtin.TypeId, ti) == std.builtin.TypeId.Struct); } diff --git a/test/behavior/bugs/1442.zig b/test/behavior/bugs/1442.zig index 69af0a9f4c3c12aee7fc384424af9ff46fde2485..1933c8022e62f61b87fe27e36fd51673cc1b2ac5 100644 --- a/test/behavior/bugs/1442.zig +++ b/test/behavior/bugs/1442.zig @@ -7,6 +7,10 @@ const Union = union(enum) { }; test "const error union field alignment" { + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; var union_or_err: anyerror!Union = Union{ .Color = 1234 }; try std.testing.expect((union_or_err catch unreachable).Color == 1234); } diff --git a/test/behavior/bugs/1607.zig b/test/behavior/bugs/1607.zig index a60905b070c43fcfbe0e026e4db027363cd9981b..dfcea537b530b6df4fc578c83dbc5f2a5048dbc6 100644 --- a/test/behavior/bugs/1607.zig +++ b/test/behavior/bugs/1607.zig @@ -1,5 +1,6 @@ const std = @import("std"); const testing = std.testing; +const builtin = @import("builtin"); const a = [_]u8{ 1, 2, 3 }; @@ -10,6 +11,10 @@ fn checkAddress(s: []const u8) !void { } test "slices pointing at the same address as global array." { + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; try checkAddress(&a); comptime try checkAddress(&a); } diff --git a/test/behavior/bugs/3742.zig b/test/behavior/bugs/3742.zig index bf6e1f52073e65354d2d36f41282dde8c444fa33..4ade6895f8d187af1a4d845bc4aab40f0912dd9f 100644 --- a/test/behavior/bugs/3742.zig +++ b/test/behavior/bugs/3742.zig @@ -1,4 +1,5 @@ const std = @import("std"); +const builtin = @import("builtin"); pub const GET = struct { key: []const u8, @@ -34,5 +35,9 @@ pub const ArgSerializer = struct { }; test "fixed" { + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; ArgSerializer.serializeCommand(GET.init("banana")); } diff --git a/test/behavior/bugs/5398.zig b/test/behavior/bugs/5398.zig index 8dc170c7363d14e8a374edf25fd2d9934da9c3ca..4041bb20780be1ff8daaf8aca9fb247d13a118be 100644 --- a/test/behavior/bugs/5398.zig +++ b/test/behavior/bugs/5398.zig @@ -1,5 +1,6 @@ const std = @import("std"); const testing = std.testing; +const builtin = @import("builtin"); pub const Mesh = struct { id: u32, @@ -18,6 +19,10 @@ pub const Renderable = struct { var renderable: Renderable = undefined; test "assignment of field with padding" { + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; renderable = Renderable{ .mesh = Mesh{ .id = 0 }, .material = Material{ diff --git a/test/behavior/bugs/5474.zig b/test/behavior/bugs/5474.zig index 62d7a52a3f668b128d86ac029775a7b2040b2c6f..47066aa01707c5e5ffa1a028e2ba6762345dffd8 100644 --- a/test/behavior/bugs/5474.zig +++ b/test/behavior/bugs/5474.zig @@ -49,11 +49,19 @@ fn constant() !void { } test "pointer-to-array constness for zero-size elements, var" { + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; try mutable(); comptime try mutable(); } test "pointer-to-array constness for zero-size elements, const" { + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; try constant(); comptime try constant(); } diff --git a/test/behavior/bugs/5487.zig b/test/behavior/bugs/5487.zig index 4f67e6e846a949882fd3c522fc1e6c9922580553..9955d1f2f58abb490a4857ffcd8e40bf4a892a3d 100644 --- a/test/behavior/bugs/5487.zig +++ b/test/behavior/bugs/5487.zig @@ -1,4 +1,5 @@ const io = @import("std").io; +const builtin = @import("builtin"); pub fn write(_: void, bytes: []const u8) !usize { _ = bytes; @@ -9,5 +10,9 @@ pub fn writer() io.Writer(void, @typeInfo(@typeInfo(@TypeOf(write)).Fn.return_ty } test "crash" { + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; _ = io.multiWriter(.{writer()}); } diff --git a/test/behavior/bugs/726.zig b/test/behavior/bugs/726.zig index 364d209e3bb497ed2b8c349ef0f8790bb27169af..03e010e4f128f0990d81ab586819058a136dfa9a 100644 --- a/test/behavior/bugs/726.zig +++ b/test/behavior/bugs/726.zig @@ -1,12 +1,23 @@ const expect = @import("std").testing.expect; +const builtin = @import("builtin"); test "@ptrCast from const to nullable" { + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; + const c: u8 = 4; var x: ?*const u8 = @ptrCast(?*const u8, &c); try expect(x.?.* == 4); } test "@ptrCast from var in empty struct to nullable" { + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; + const container = struct { var c: u8 = 4; }; diff --git a/test/behavior/bugs/828.zig b/test/behavior/bugs/828.zig index d54664f9c6c05afb06460b88774dc0476b6da40d..a8253e0c4c2025cad77babc6ff20eb6bb4b1f7d8 100644 --- a/test/behavior/bugs/828.zig +++ b/test/behavior/bugs/828.zig @@ -1,3 +1,5 @@ +const builtin = @import("builtin"); + const CountBy = struct { a: usize, @@ -28,6 +30,9 @@ fn constCount(comptime cb: *const CountBy, comptime unused: u32) void { } test "comptime struct return should not return the same instance" { + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; + //the first parameter must be passed by reference to trigger the bug //a second parameter is required to trigger the bug const ValA = constCount(&CountBy.One, 12); diff --git a/test/behavior/enum.zig b/test/behavior/enum.zig index 3f41b453428a74a41b90d535bb5d9a9a070793cf..e230032d043600a59caefa205cfed899da90efd4 100644 --- a/test/behavior/enum.zig +++ b/test/behavior/enum.zig @@ -938,7 +938,6 @@ test "constant enum initialization with differing sizes" { if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; - if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO try test3_1(test3_foo); try test3_2(test3_bar); diff --git a/test/behavior/error.zig b/test/behavior/error.zig index 61d192b483e92c888bd7976351da30d19ea0c8ca..7dd0d44e01c4cdd17fb600b66755df612aa42497 100644 --- a/test/behavior/error.zig +++ b/test/behavior/error.zig @@ -156,7 +156,6 @@ fn bar2() (error{}!void) {} test "error union type " { if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO - if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO try testErrorUnionType(); comptime try testErrorUnionType(); @@ -199,7 +198,6 @@ fn testErrorSetType() !void { test "explicit error set cast" { if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO - if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO try testExplicitErrorSetCast(Set1.A); comptime try testExplicitErrorSetCast(Set1.A); @@ -296,7 +294,6 @@ test "error: Infer error set from literals" { if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO - if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO _ = nullLiteral("n") catch |err| handleErrors(err); _ = floatLiteral("n") catch |err| handleErrors(err); diff --git a/test/behavior/field_parent_ptr.zig b/test/behavior/field_parent_ptr.zig index addb7942adf1187157f0be9caecb1c153efaa023..3aefb0ef47f920300b88ed10aa89425d5739a403 100644 --- a/test/behavior/field_parent_ptr.zig +++ b/test/behavior/field_parent_ptr.zig @@ -1,11 +1,20 @@ const expect = @import("std").testing.expect; +const builtin = @import("builtin"); test "@fieldParentPtr non-first field" { + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; try testParentFieldPtr(&foo.c); comptime try testParentFieldPtr(&foo.c); } test "@fieldParentPtr first field" { + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; try testParentFieldPtrFirst(&foo.a); comptime try testParentFieldPtrFirst(&foo.a); } diff --git a/test/behavior/math.zig b/test/behavior/math.zig index dcb713392a347910789b0395ee616637b9d22c78..e06d1bf01a5cd7887b893d3e9be4c330505ee8dc 100644 --- a/test/behavior/math.zig +++ b/test/behavior/math.zig @@ -191,7 +191,6 @@ test "const number literal" { const ten = 10; test "float equality" { - if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO diff --git a/test/behavior/merge_error_sets.zig b/test/behavior/merge_error_sets.zig index 147b580232d10deaf9bc78715696c851aa92ae30..1c3c06c4c526fbebf903058fdb5e9a34a6a9055a 100644 --- a/test/behavior/merge_error_sets.zig +++ b/test/behavior/merge_error_sets.zig @@ -1,3 +1,4 @@ +const builtin = @import("builtin"); const A = error{ FileNotFound, NotDir, @@ -11,6 +12,10 @@ fn foo() C!void { } test "merge error sets" { + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; if (foo()) { @panic("unexpected"); } else |err| switch (err) { diff --git a/test/behavior/null.zig b/test/behavior/null.zig index 01611eaef8c63b6d6643ee98f8819de4938b2c19..fd6104060a317c699c7f9783310d070ad81f0f83 100644 --- a/test/behavior/null.zig +++ b/test/behavior/null.zig @@ -182,7 +182,6 @@ const here_is_a_null_literal = SillyStruct{ .context = null }; test "unwrap optional which is field of global var" { if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO - if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; diff --git a/test/behavior/ptrcast.zig b/test/behavior/ptrcast.zig index 5558ad48b5ccb0c4a40fe15f0ef2c613c3cec606..cfca107d78810b5c5607f999e0f12e8b882cfe4e 100644 --- a/test/behavior/ptrcast.zig +++ b/test/behavior/ptrcast.zig @@ -43,7 +43,6 @@ fn testReinterpretBytesAsExternStruct() !void { } test "reinterpret struct field at comptime" { - if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO diff --git a/test/behavior/sizeof_and_typeof.zig b/test/behavior/sizeof_and_typeof.zig index 852e1e74e4ec641077e290eef0b2ad9d33f405ed..57e6e2093e265687512f51342844d00ed47cc625 100644 --- a/test/behavior/sizeof_and_typeof.zig +++ b/test/behavior/sizeof_and_typeof.zig @@ -18,6 +18,10 @@ test "@sizeOf on compile-time types" { } test "@TypeOf() with multiple arguments" { + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; { var var_1: u32 = undefined; var var_2: u8 = undefined; @@ -74,6 +78,8 @@ const P = packed struct { }; test "@offsetOf" { + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // Packed structs have fixed memory layout try expect(@offsetOf(P, "a") == 0); @@ -180,6 +186,10 @@ test "@sizeOf(T) == 0 doesn't force resolving struct size" { } test "@TypeOf() has no runtime side effects" { + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; const S = struct { fn foo(comptime T: type, ptr: *T) T { ptr.* += 1; @@ -193,6 +203,10 @@ test "@TypeOf() has no runtime side effects" { } test "branching logic inside @TypeOf" { + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; const S = struct { var data: i32 = 0; fn foo() anyerror!i32 { diff --git a/test/behavior/struct_contains_null_ptr_itself.zig b/test/behavior/struct_contains_null_ptr_itself.zig index 28aa1d57aa60182872e3c0916f2dc6438935d55f..ce4f63f976b6cdf988f0c35cf52a43cd5eda4f7b 100644 --- a/test/behavior/struct_contains_null_ptr_itself.zig +++ b/test/behavior/struct_contains_null_ptr_itself.zig @@ -1,7 +1,12 @@ const std = @import("std"); const expect = std.testing.expect; +const builtin = @import("builtin"); test "struct contains null pointer which contains original struct" { + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; var x: ?*NodeLineComment = null; try expect(x == null); } diff --git a/test/behavior/switch_prong_err_enum.zig b/test/behavior/switch_prong_err_enum.zig index b68f21df6f64dd8c9f423c5d8cad8c8bad807d53..6abae1a7b6cf7c30d10980c681055210b6687bf4 100644 --- a/test/behavior/switch_prong_err_enum.zig +++ b/test/behavior/switch_prong_err_enum.zig @@ -1,4 +1,5 @@ const expect = @import("std").testing.expect; +const builtin = @import("builtin"); var read_count: u64 = 0; @@ -20,6 +21,10 @@ fn doThing(form_id: u64) anyerror!FormValue { } test "switch prong returns error enum" { + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; switch (doThing(17) catch unreachable) { FormValue.Address => |payload| { try expect(payload == 1); diff --git a/test/behavior/switch_prong_implicit_cast.zig b/test/behavior/switch_prong_implicit_cast.zig index bc08fea93f9c04fd0132e115644b900bff129ad5..716afc3ace72c059b918b0c3f20084d32ba88198 100644 --- a/test/behavior/switch_prong_implicit_cast.zig +++ b/test/behavior/switch_prong_implicit_cast.zig @@ -1,4 +1,5 @@ const expect = @import("std").testing.expect; +const builtin = @import("builtin"); const FormValue = union(enum) { One: void, @@ -14,6 +15,10 @@ fn foo(id: u64) !FormValue { } test "switch prong implicit cast" { + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; const result = switch (foo(2) catch unreachable) { FormValue.One => false, FormValue.Two => |x| x, diff --git a/test/behavior/union.zig b/test/behavior/union.zig index c879b446384c47f107d40a959408710d20d96c7a..3f53fec3abc0b8f6129c30bae7f1da6c5648e362 100644 --- a/test/behavior/union.zig +++ b/test/behavior/union.zig @@ -457,7 +457,6 @@ test "initialize global array of union" { if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; - if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; glbl_array[1] = FooUnion{ .U1 = 2 }; diff --git a/test/behavior/var_args.zig b/test/behavior/var_args.zig index 6639d8664ecbf2bc22de5133bc1c3fb90712f931..d73f86467570e2b07afacb64d08299685ed8085f 100644 --- a/test/behavior/var_args.zig +++ b/test/behavior/var_args.zig @@ -28,7 +28,6 @@ fn readFirstVarArg(args: anytype) void { test "send void arg to var args" { if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; - if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO @@ -92,7 +91,6 @@ fn foo2(args: anytype) bool { test "array of var args functions" { if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; - if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO @@ -102,7 +100,6 @@ test "array of var args functions" { test "pass zero length array to var args param" { if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; - if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO