authorgravatar for paul.verigo@gmail.comPavel Verigo <paul.verigo@gmail.com> 2025-12-05 22:51:05+01:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-12-07 07:21:15+01:00
logbf58a3bc082a7d305df082360ef93316d8c8dfd6
treeab5fde52c7d27f8dfa2fb4720a421929c70b5080
parentcc099afca557ae427261ab0c5c733738d9d87782

stage2_wasm: revival, enabling tests


9 files changed, 23 insertions(+), 18 deletions(-)

src/codegen/wasm/Emit.zig+1-1
......@@ -85,7 +85,7 @@ pub fn lowerToCode(emit: *Emit) Error!void {
8585 if (is_obj) {
8686 @panic("TODO");
8787 } else {
88 writeUleb128(code, 1 + @intFromEnum(indirect_func_idx));
88 writeSleb128(code, 1 + @intFromEnum(indirect_func_idx));
8989 }
9090 inst += 1;
9191 continue :loop tags[inst];
src/link/Wasm/Flush.zig+4-1
......@@ -933,6 +933,7 @@ pub fn finish(f: *Flush, wasm: *Wasm) !void {
933933 var segment_offset: u32 = 0;
934934 var group_start_addr: u32 = data_vaddr;
935935 var group_end_addr = f.data_segment_groups.items[group_index].end_addr;
936 var first_segment_in_group = true;
936937 for (segment_ids, segment_vaddrs) |segment_id, segment_vaddr| {
937938 if (segment_vaddr >= group_end_addr) {
938939 try binary_bytes.appendNTimes(gpa, 0, group_end_addr - group_start_addr - segment_offset);
......@@ -944,8 +945,10 @@ pub fn finish(f: *Flush, wasm: *Wasm) !void {
944945 group_start_addr = group_end_addr;
945946 group_end_addr = f.data_segment_groups.items[group_index].end_addr;
946947 segment_offset = 0;
948 first_segment_in_group = true;
947949 }
948 if (segment_offset == 0) {
950 if (first_segment_in_group) {
951 first_segment_in_group = false;
949952 const group_size = group_end_addr - group_start_addr;
950953 log.debug("emit data section group, {d} bytes", .{group_size});
951954 const flags: Object.DataSegmentFlags = if (segment_id.isPassive(wasm)) .passive else .active;
test/behavior/enum.zig+1
......@@ -1066,6 +1066,7 @@ test "tag name with signed enum values" {
10661066test "tag name with large enum values" {
10671067 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
10681068 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
1069 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
10691070
10701071 const Kdf = enum(u128) {
10711072 aes_kdf = 0xea4f8ac1080d74bf60448a629af3d9c9,
test/behavior/field_parent_ptr.zig+3
......@@ -1033,6 +1033,7 @@ test "@fieldParentPtr packed struct first zero-bit field" {
10331033 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
10341034 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
10351035 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1036 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
10361037
10371038 const C = packed struct {
10381039 a: u0 = 0,
......@@ -1139,6 +1140,7 @@ test "@fieldParentPtr packed struct middle zero-bit field" {
11391140 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
11401141 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
11411142 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1143 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
11421144
11431145 const C = packed struct {
11441146 a: f32 = 3.14,
......@@ -1245,6 +1247,7 @@ test "@fieldParentPtr packed struct last zero-bit field" {
12451247 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
12461248 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
12471249 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1250 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
12481251
12491252 const C = packed struct {
12501253 a: f32 = 3.14,
test/behavior/struct.zig+1
......@@ -749,6 +749,7 @@ test "packed struct with fp fields" {
749749 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
750750 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
751751 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
752 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
752753
753754 const S = packed struct {
754755 data0: f32,
test/behavior/union.zig+1
......@@ -2217,6 +2217,7 @@ test "matching captures causes union equivalence" {
22172217test "signed enum tag with negative value" {
22182218 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
22192219 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
2220 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
22202221 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
22212222
22222223 const Enum = enum(i8) {
test/behavior/vector.zig+2
......@@ -9,6 +9,7 @@ const expectEqual = std.testing.expectEqual;
99test "implicit cast vector to array - bool" {
1010 if (builtin.cpu.arch == .aarch64_be and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest;
1111 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
12 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
1213
1314 const S = struct {
1415 fn doTheTest() !void {
......@@ -32,6 +33,7 @@ test "implicit cast vector to array - bool" {
3233
3334test "implicit cast array to vector - bool" {
3435 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
36 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
3537
3638 const S = struct {
3739 fn doTheTest() !void {
test/src/Cases.zig-4
......@@ -370,10 +370,6 @@ fn addFromDirInner(
370370 const resolved_target = b.resolveTargetQuery(target_query);
371371 const target = &resolved_target.result;
372372 for (backends) |backend| {
373 if (backend == .selfhosted and target.cpu.arch == .wasm32) {
374 // https://github.com/ziglang/zig/issues/25684
375 continue;
376 }
377373 if (backend == .selfhosted and
378374 target.cpu.arch != .aarch64 and target.cpu.arch != .wasm32 and target.cpu.arch != .x86_64 and target.cpu.arch != .spirv64)
379375 {
test/tests.zig+10-12
......@@ -1381,18 +1381,16 @@ const test_targets = blk: {
13811381
13821382 // WASI Targets
13831383
1384 // Disabled due to no active maintainer (feel free to fix the failures
1385 // and then re-enable at any time). The failures occur due to backend
1386 // miscompilation of different AIR from the frontend.
1387 //.{
1388 // .target = .{
1389 // .cpu_arch = .wasm32,
1390 // .os_tag = .wasi,
1391 // .abi = .none,
1392 // },
1393 // .use_llvm = false,
1394 // .use_lld = false,
1395 //},
1384 .{
1385 .target = .{
1386 .cpu_arch = .wasm32,
1387 .os_tag = .wasi,
1388 .abi = .none,
1389 },
1390 .skip_modules = &.{ "compiler-rt", "std" },
1391 .use_llvm = false,
1392 .use_lld = false,
1393 },
13961394 .{
13971395 .target = .{
13981396 .cpu_arch = .wasm32,