zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit ba5420896d67f8e09d96e37a30477d7b091e015e (tree)
parent 4c9d06416c1f0e4e7bf5139a705c50ad18f9c39a
Author: Pavel Verigo <paul.verigo@gmail.com>
Date:   Mon, 29 Jun 2026 00:26:31 +0200

Enable std tests for wasm backend again + enable field reordering

Additionally remove some skips, closes #30575

Diffstat:
Mlib/std/Io/Threaded.zig | 7-------
Mlib/std/debug.zig | 1-
Mlib/std/fmt/float.zig | 2--
Mlib/std/math/big/int_test.zig | 1-
Mlib/std/math/log10.zig | 1-
Msrc/codegen/wasm/CodeGen.zig | 7++-----
Msrc/target.zig | 2+-
Mtest/behavior/floatop.zig | 1-
Mtest/behavior/struct.zig | 1-
Mtest/tests.zig | 2+-
10 files changed, 4 insertions(+), 21 deletions(-)

diff --git a/lib/std/Io/Threaded.zig b/lib/std/Io/Threaded.zig @@ -14400,13 +14400,6 @@ pub fn nanosecondsFromPosix(timespec: *const posix.timespec) i96 { } fn timestampToPosix(nanoseconds: i96) posix.timespec { - if (builtin.zig_backend == .stage2_wasm) { - // Workaround for https://codeberg.org/ziglang/zig/issues/30575 - return .{ - .sec = @intCast(@divTrunc(nanoseconds, std.time.ns_per_s)), - .nsec = @intCast(@rem(nanoseconds, std.time.ns_per_s)), - }; - } return .{ .sec = @intCast(@divFloor(nanoseconds, std.time.ns_per_s)), .nsec = @intCast(@mod(nanoseconds, std.time.ns_per_s)), diff --git a/lib/std/debug.zig b/lib/std/debug.zig @@ -494,7 +494,6 @@ const use_trap_panic = switch (builtin.zig_backend) { .stage2_powerpc, .stage2_riscv64, .stage2_spirv, - .stage2_wasm, .stage2_x86, => true, else => false, diff --git a/lib/std/fmt/float.zig b/lib/std/fmt/float.zig @@ -1646,8 +1646,6 @@ test "format f64" { } test "format f80" { - if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; - try check(f80, 0.0, "0e0"); try check(f80, -0.0, "-0e0"); try check(f80, 1.0, "1e0"); diff --git a/lib/std/math/big/int_test.zig b/lib/std/math/big/int_test.zig @@ -2795,7 +2795,6 @@ test "bitNotWrap signed multi" { test "bitNotWrap more than two limbs" { // This test requires int sizes greater than 128 bits. - 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 diff --git a/lib/std/math/log10.zig b/lib/std/math/log10.zig @@ -135,7 +135,6 @@ inline fn less_than_5(x: u32) u32 { } test log10_int { - 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_sparc64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO diff --git a/src/codegen/wasm/CodeGen.zig b/src/codegen/wasm/CodeGen.zig @@ -4345,7 +4345,7 @@ fn floatNeg(cg: *CodeGen, ty: FloatType, arg: WValue) InnerError!WValue { try cg.addMemArg(.i64_load, .{ .offset = 8 + arg.offset(), .alignment = 2 }); try cg.addImm64(0x8000); try cg.addTag(.i64_xor); - try cg.addMemArg(.i64_store16, .{ .offset = 8 + result.offset(), .alignment = 2 }); + try cg.addMemArg(.i64_store, .{ .offset = 8 + result.offset(), .alignment = 2 }); return result; }, .f128 => { @@ -6652,15 +6652,12 @@ fn airAggregateInit(cg: *CodeGen, inst: Air.Inst.Index) InnerError!void { .@"packed" => unreachable, // legalize .expand_packed_aggregate_init else => { const result = try cg.allocStack(result_ty); - const offset = try cg.buildPointerOffset(result, 0, .new); // pointer to offset - var prev_field_offset: u64 = 0; for (elements, 0..) |elem, elem_index| { if (try result_ty.structFieldValueComptime(pt, elem_index) != null) continue; const elem_ty = result_ty.fieldType(elem_index, zcu); const field_offset = result_ty.structFieldOffset(elem_index, zcu); - _ = try cg.buildPointerOffset(offset, @intCast(field_offset - prev_field_offset), .modify); - prev_field_offset = field_offset; + const offset = try cg.buildPointerOffset(result, field_offset, .new); const value = try cg.resolveInst(elem); try cg.store(offset, value, elem_ty, 0); diff --git a/src/target.zig b/src/target.zig @@ -945,7 +945,7 @@ pub inline fn backendSupportsFeature(backend: std.lang.CompilerBackend, comptime else => false, }, .field_reordering => switch (backend) { - .stage2_aarch64, .stage2_c, .stage2_llvm, .stage2_x86_64 => true, + .stage2_aarch64, .stage2_c, .stage2_llvm, .stage2_x86_64, .stage2_wasm => true, else => false, }, .separate_thread => switch (backend) { diff --git a/test/behavior/floatop.zig b/test/behavior/floatop.zig @@ -1544,7 +1544,6 @@ fn testNeg(comptime T: type) !void { } test "negate f80" { - if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; var f: f80 = 0.0; diff --git a/test/behavior/struct.zig b/test/behavior/struct.zig @@ -1484,7 +1484,6 @@ test "optional generic function label struct field" { test "struct fields get automatically reordered" { if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; - if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; // TODO const S1 = struct { diff --git a/test/tests.zig b/test/tests.zig @@ -1523,7 +1523,7 @@ const module_test_targets = blk: { .os_tag = .wasi, .abi = .none, }, - .skip_modules = &.{ "compiler-rt", "std" }, + .skip_modules = &.{"compiler-rt"}, .use_llvm = false, .use_lld = false, },