| author | |
| committer | |
| log | bf58a3bc082a7d305df082360ef93316d8c8dfd6 |
| tree | ab5fde52c7d27f8dfa2fb4720a421929c70b5080 |
| parent | cc099afca557ae427261ab0c5c733738d9d87782 |
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 { |
| 85 | 85 | if (is_obj) { |
| 86 | 86 | @panic("TODO"); |
| 87 | 87 | } else { |
| 88 | writeUleb128(code, 1 + @intFromEnum(indirect_func_idx)); | |
| 88 | writeSleb128(code, 1 + @intFromEnum(indirect_func_idx)); | |
| 89 | 89 | } |
| 90 | 90 | inst += 1; |
| 91 | 91 | continue :loop tags[inst]; |
src/link/Wasm/Flush.zig+4-1| ... | ... | @@ -933,6 +933,7 @@ pub fn finish(f: *Flush, wasm: *Wasm) !void { |
| 933 | 933 | var segment_offset: u32 = 0; |
| 934 | 934 | var group_start_addr: u32 = data_vaddr; |
| 935 | 935 | var group_end_addr = f.data_segment_groups.items[group_index].end_addr; |
| 936 | var first_segment_in_group = true; | |
| 936 | 937 | for (segment_ids, segment_vaddrs) |segment_id, segment_vaddr| { |
| 937 | 938 | if (segment_vaddr >= group_end_addr) { |
| 938 | 939 | 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 { |
| 944 | 945 | group_start_addr = group_end_addr; |
| 945 | 946 | group_end_addr = f.data_segment_groups.items[group_index].end_addr; |
| 946 | 947 | segment_offset = 0; |
| 948 | first_segment_in_group = true; | |
| 947 | 949 | } |
| 948 | if (segment_offset == 0) { | |
| 950 | if (first_segment_in_group) { | |
| 951 | first_segment_in_group = false; | |
| 949 | 952 | const group_size = group_end_addr - group_start_addr; |
| 950 | 953 | log.debug("emit data section group, {d} bytes", .{group_size}); |
| 951 | 954 | 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" { |
| 1066 | 1066 | test "tag name with large enum values" { |
| 1067 | 1067 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; |
| 1068 | 1068 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; |
| 1069 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; | |
| 1069 | 1070 | |
| 1070 | 1071 | const Kdf = enum(u128) { |
| 1071 | 1072 | aes_kdf = 0xea4f8ac1080d74bf60448a629af3d9c9, |
test/behavior/field_parent_ptr.zig+3| ... | ... | @@ -1033,6 +1033,7 @@ test "@fieldParentPtr packed struct first zero-bit field" { |
| 1033 | 1033 | if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; |
| 1034 | 1034 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; |
| 1035 | 1035 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; |
| 1036 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; | |
| 1036 | 1037 | |
| 1037 | 1038 | const C = packed struct { |
| 1038 | 1039 | a: u0 = 0, |
| ... | ... | @@ -1139,6 +1140,7 @@ test "@fieldParentPtr packed struct middle zero-bit field" { |
| 1139 | 1140 | if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; |
| 1140 | 1141 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; |
| 1141 | 1142 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; |
| 1143 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; | |
| 1142 | 1144 | |
| 1143 | 1145 | const C = packed struct { |
| 1144 | 1146 | a: f32 = 3.14, |
| ... | ... | @@ -1245,6 +1247,7 @@ test "@fieldParentPtr packed struct last zero-bit field" { |
| 1245 | 1247 | if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; |
| 1246 | 1248 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; |
| 1247 | 1249 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; |
| 1250 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; | |
| 1248 | 1251 | |
| 1249 | 1252 | const C = packed struct { |
| 1250 | 1253 | a: f32 = 3.14, |
test/behavior/struct.zig+1| ... | ... | @@ -749,6 +749,7 @@ test "packed struct with fp fields" { |
| 749 | 749 | if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; |
| 750 | 750 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; |
| 751 | 751 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; |
| 752 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; | |
| 752 | 753 | |
| 753 | 754 | const S = packed struct { |
| 754 | 755 | data0: f32, |
test/behavior/union.zig+1| ... | ... | @@ -2217,6 +2217,7 @@ test "matching captures causes union equivalence" { |
| 2217 | 2217 | test "signed enum tag with negative value" { |
| 2218 | 2218 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 2219 | 2219 | if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; |
| 2220 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; | |
| 2220 | 2221 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; |
| 2221 | 2222 | |
| 2222 | 2223 | const Enum = enum(i8) { |
test/behavior/vector.zig+2| ... | ... | @@ -9,6 +9,7 @@ const expectEqual = std.testing.expectEqual; |
| 9 | 9 | test "implicit cast vector to array - bool" { |
| 10 | 10 | if (builtin.cpu.arch == .aarch64_be and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest; |
| 11 | 11 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; |
| 12 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; | |
| 12 | 13 | |
| 13 | 14 | const S = struct { |
| 14 | 15 | fn doTheTest() !void { |
| ... | ... | @@ -32,6 +33,7 @@ test "implicit cast vector to array - bool" { |
| 32 | 33 | |
| 33 | 34 | test "implicit cast array to vector - bool" { |
| 34 | 35 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; |
| 36 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; | |
| 35 | 37 | |
| 36 | 38 | const S = struct { |
| 37 | 39 | fn doTheTest() !void { |
test/src/Cases.zig-4| ... | ... | @@ -370,10 +370,6 @@ fn addFromDirInner( |
| 370 | 370 | const resolved_target = b.resolveTargetQuery(target_query); |
| 371 | 371 | const target = &resolved_target.result; |
| 372 | 372 | for (backends) |backend| { |
| 373 | if (backend == .selfhosted and target.cpu.arch == .wasm32) { | |
| 374 | // https://github.com/ziglang/zig/issues/25684 | |
| 375 | continue; | |
| 376 | } | |
| 377 | 373 | if (backend == .selfhosted and |
| 378 | 374 | target.cpu.arch != .aarch64 and target.cpu.arch != .wasm32 and target.cpu.arch != .x86_64 and target.cpu.arch != .spirv64) |
| 379 | 375 | { |
test/tests.zig+10-12| ... | ... | @@ -1381,18 +1381,16 @@ const test_targets = blk: { |
| 1381 | 1381 | |
| 1382 | 1382 | // WASI Targets |
| 1383 | 1383 | |
| 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 | }, | |
| 1396 | 1394 | .{ |
| 1397 | 1395 | .target = .{ |
| 1398 | 1396 | .cpu_arch = .wasm32, |