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 {
1440014400}
1440114401
1440214402fn 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 }
1441014403 return .{
1441114404 .sec = @intCast(@divFloor(nanoseconds, std.time.ns_per_s)),
1441214405 .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) {
494494 .stage2_powerpc,
495495 .stage2_riscv64,
496496 .stage2_spirv,
497 .stage2_wasm,
498497 .stage2_x86,
499498 => true,
500499 else => false,
lib/std/fmt/float.zig-2
......@@ -1646,8 +1646,6 @@ test "format f64" {
16461646}
16471647
16481648test "format f80" {
1649 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
1650
16511649 try check(f80, 0.0, "0e0");
16521650 try check(f80, -0.0, "-0e0");
16531651 try check(f80, 1.0, "1e0");
lib/std/math/big/int_test.zig-1
......@@ -2795,7 +2795,6 @@ test "bitNotWrap signed multi" {
27952795
27962796test "bitNotWrap more than two limbs" {
27972797 // This test requires int sizes greater than 128 bits.
2798 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
27992798 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
28002799 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 {
135135}
136136
137137test log10_int {
138 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
139138 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
140139 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
141140 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 {
43454345 try cg.addMemArg(.i64_load, .{ .offset = 8 + arg.offset(), .alignment = 2 });
43464346 try cg.addImm64(0x8000);
43474347 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 });
43494349 return result;
43504350 },
43514351 .f128 => {
......@@ -6652,15 +6652,12 @@ fn airAggregateInit(cg: *CodeGen, inst: Air.Inst.Index) InnerError!void {
66526652 .@"packed" => unreachable, // legalize .expand_packed_aggregate_init
66536653 else => {
66546654 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;
66576655 for (elements, 0..) |elem, elem_index| {
66586656 if (try result_ty.structFieldValueComptime(pt, elem_index) != null) continue;
66596657
66606658 const elem_ty = result_ty.fieldType(elem_index, zcu);
66616659 const field_offset = result_ty.structFieldOffset(elem_index, zcu);
6662 _ = try cg.buildPointerOffset(offset, @intCast(field_offset - prev_field_offset), .modify);
6663 prev_field_offset = field_offset;
6660 const offset = try cg.buildPointerOffset(result, field_offset, .new);
66646661
66656662 const value = try cg.resolveInst(elem);
66666663 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
945945 else => false,
946946 },
947947 .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,
949949 else => false,
950950 },
951951 .separate_thread => switch (backend) {
test/behavior/floatop.zig-1
......@@ -1544,7 +1544,6 @@ fn testNeg(comptime T: type) !void {
15441544}
15451545
15461546test "negate f80" {
1547 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
15481547 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
15491548
15501549 var f: f80 = 0.0;
test/behavior/struct.zig-1
......@@ -1484,7 +1484,6 @@ test "optional generic function label struct field" {
14841484
14851485test "struct fields get automatically reordered" {
14861486 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
1487 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
14881487 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO
14891488
14901489 const S1 = struct {
test/tests.zig+1-1
......@@ -1523,7 +1523,7 @@ const module_test_targets = blk: {
15231523 .os_tag = .wasi,
15241524 .abi = .none,
15251525 },
1526 .skip_modules = &.{ "compiler-rt", "std" },
1526 .skip_modules = &.{"compiler-rt"},
15271527 .use_llvm = false,
15281528 .use_lld = false,
15291529 },