authorgravatar for paul.verigo@gmail.comPavel Verigo <paul.verigo@gmail.com> 2026-06-29 00:26:31+02:00
committergravatar for paul.verigo@gmail.comPavel Verigo <paul.verigo@gmail.com> 2026-06-29 13:22:20+02:00
logba5420896d67f8e09d96e37a30477d7b091e015e
tree08fddc44a2f9fa5467f1621e02ca1f495f96438c
parent4c9d06416c1f0e4e7bf5139a705c50ad18f9c39a

Enable std tests for wasm backend again + enable field reordering

Additionally remove some skips, closes #30575

10 files changed, 4 insertions(+), 21 deletions(-)

lib/std/Io/Threaded.zig-7
...@@ -14400,13 +14400,6 @@ pub fn nanosecondsFromPosix(timespec: *const posix.timespec) i96 {...@@ -14400,13 +14400,6 @@ pub fn nanosecondsFromPosix(timespec: *const posix.timespec) i96 {
14400}14400}
1440114401
14402fn timestampToPosix(nanoseconds: i96) posix.timespec {14402fn timestampToPosix(nanoseconds: i96) posix.timespec {
14403 if (builtin.zig_backend == .stage2_wasm) {
14404 // Workaround for https://codeberg.org/ziglang/zig/issues/30575
14405 return .{
14406 .sec = @intCast(@divTrunc(nanoseconds, std.time.ns_per_s)),
14407 .nsec = @intCast(@rem(nanoseconds, std.time.ns_per_s)),
14408 };
14409 }
14410 return .{14403 return .{
14411 .sec = @intCast(@divFloor(nanoseconds, std.time.ns_per_s)),14404 .sec = @intCast(@divFloor(nanoseconds, std.time.ns_per_s)),
14412 .nsec = @intCast(@mod(nanoseconds, std.time.ns_per_s)),14405 .nsec = @intCast(@mod(nanoseconds, std.time.ns_per_s)),
lib/std/debug.zig-1
...@@ -494,7 +494,6 @@ const use_trap_panic = switch (builtin.zig_backend) {...@@ -494,7 +494,6 @@ const use_trap_panic = switch (builtin.zig_backend) {
494 .stage2_powerpc,494 .stage2_powerpc,
495 .stage2_riscv64,495 .stage2_riscv64,
496 .stage2_spirv,496 .stage2_spirv,
497 .stage2_wasm,
498 .stage2_x86,497 .stage2_x86,
499 => true,498 => true,
500 else => false,499 else => false,
lib/std/fmt/float.zig-2
...@@ -1646,8 +1646,6 @@ test "format f64" {...@@ -1646,8 +1646,6 @@ test "format f64" {
1646}1646}
16471647
1648test "format f80" {1648test "format f80" {
1649 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
1650
1651 try check(f80, 0.0, "0e0");1649 try check(f80, 0.0, "0e0");
1652 try check(f80, -0.0, "-0e0");1650 try check(f80, -0.0, "-0e0");
1653 try check(f80, 1.0, "1e0");1651 try check(f80, 1.0, "1e0");
lib/std/math/big/int_test.zig-1
...@@ -2795,7 +2795,6 @@ test "bitNotWrap signed multi" {...@@ -2795,7 +2795,6 @@ test "bitNotWrap signed multi" {
27952795
2796test "bitNotWrap more than two limbs" {2796test "bitNotWrap more than two limbs" {
2797 // This test requires int sizes greater than 128 bits.2797 // This test requires int sizes greater than 128 bits.
2798 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
2799 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO2798 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
2800 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO2799 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
28012800
lib/std/math/log10.zig-1
...@@ -135,7 +135,6 @@ inline fn less_than_5(x: u32) u32 {...@@ -135,7 +135,6 @@ inline fn less_than_5(x: u32) u32 {
135}135}
136136
137test log10_int {137test log10_int {
138 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
139 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO138 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
140 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO139 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
141 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO140 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
src/codegen/wasm/CodeGen.zig+2-5
...@@ -4345,7 +4345,7 @@ fn floatNeg(cg: *CodeGen, ty: FloatType, arg: WValue) InnerError!WValue {...@@ -4345,7 +4345,7 @@ fn floatNeg(cg: *CodeGen, ty: FloatType, arg: WValue) InnerError!WValue {
4345 try cg.addMemArg(.i64_load, .{ .offset = 8 + arg.offset(), .alignment = 2 });4345 try cg.addMemArg(.i64_load, .{ .offset = 8 + arg.offset(), .alignment = 2 });
4346 try cg.addImm64(0x8000);4346 try cg.addImm64(0x8000);
4347 try cg.addTag(.i64_xor);4347 try cg.addTag(.i64_xor);
4348 try cg.addMemArg(.i64_store16, .{ .offset = 8 + result.offset(), .alignment = 2 });4348 try cg.addMemArg(.i64_store, .{ .offset = 8 + result.offset(), .alignment = 2 });
4349 return result;4349 return result;
4350 },4350 },
4351 .f128 => {4351 .f128 => {
...@@ -6652,15 +6652,12 @@ fn airAggregateInit(cg: *CodeGen, inst: Air.Inst.Index) InnerError!void {...@@ -6652,15 +6652,12 @@ fn airAggregateInit(cg: *CodeGen, inst: Air.Inst.Index) InnerError!void {
6652 .@"packed" => unreachable, // legalize .expand_packed_aggregate_init6652 .@"packed" => unreachable, // legalize .expand_packed_aggregate_init
6653 else => {6653 else => {
6654 const result = try cg.allocStack(result_ty);6654 const result = try cg.allocStack(result_ty);
6655 const offset = try cg.buildPointerOffset(result, 0, .new); // pointer to offset
6656 var prev_field_offset: u64 = 0;
6657 for (elements, 0..) |elem, elem_index| {6655 for (elements, 0..) |elem, elem_index| {
6658 if (try result_ty.structFieldValueComptime(pt, elem_index) != null) continue;6656 if (try result_ty.structFieldValueComptime(pt, elem_index) != null) continue;
66596657
6660 const elem_ty = result_ty.fieldType(elem_index, zcu);6658 const elem_ty = result_ty.fieldType(elem_index, zcu);
6661 const field_offset = result_ty.structFieldOffset(elem_index, zcu);6659 const field_offset = result_ty.structFieldOffset(elem_index, zcu);
6662 _ = try cg.buildPointerOffset(offset, @intCast(field_offset - prev_field_offset), .modify);6660 const offset = try cg.buildPointerOffset(result, field_offset, .new);
6663 prev_field_offset = field_offset;
66646661
6665 const value = try cg.resolveInst(elem);6662 const value = try cg.resolveInst(elem);
6666 try cg.store(offset, value, elem_ty, 0);6663 try cg.store(offset, value, elem_ty, 0);
src/target.zig+1-1
...@@ -945,7 +945,7 @@ pub inline fn backendSupportsFeature(backend: std.lang.CompilerBackend, comptime...@@ -945,7 +945,7 @@ pub inline fn backendSupportsFeature(backend: std.lang.CompilerBackend, comptime
945 else => false,945 else => false,
946 },946 },
947 .field_reordering => switch (backend) {947 .field_reordering => switch (backend) {
948 .stage2_aarch64, .stage2_c, .stage2_llvm, .stage2_x86_64 => true,948 .stage2_aarch64, .stage2_c, .stage2_llvm, .stage2_x86_64, .stage2_wasm => true,
949 else => false,949 else => false,
950 },950 },
951 .separate_thread => switch (backend) {951 .separate_thread => switch (backend) {
test/behavior/floatop.zig-1
...@@ -1544,7 +1544,6 @@ fn testNeg(comptime T: type) !void {...@@ -1544,7 +1544,6 @@ fn testNeg(comptime T: type) !void {
1544}1544}
15451545
1546test "negate f80" {1546test "negate f80" {
1547 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
1548 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1547 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
15491548
1550 var f: f80 = 0.0;1549 var f: f80 = 0.0;
test/behavior/struct.zig-1
...@@ -1484,7 +1484,6 @@ test "optional generic function label struct field" {...@@ -1484,7 +1484,6 @@ test "optional generic function label struct field" {
14841484
1485test "struct fields get automatically reordered" {1485test "struct fields get automatically reordered" {
1486 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;1486 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
1487 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
1488 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO1487 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
14891488
1490 const S1 = struct {1489 const S1 = struct {
test/tests.zig+1-1
...@@ -1523,7 +1523,7 @@ const module_test_targets = blk: {...@@ -1523,7 +1523,7 @@ const module_test_targets = blk: {
1523 .os_tag = .wasi,1523 .os_tag = .wasi,
1524 .abi = .none,1524 .abi = .none,
1525 },1525 },
1526 .skip_modules = &.{ "compiler-rt", "std" },1526 .skip_modules = &.{"compiler-rt"},
1527 .use_llvm = false,1527 .use_llvm = false,
1528 .use_lld = false,1528 .use_lld = false,
1529 },1529 },