| 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,7 +85,7 @@ pub fn lowerToCode(emit: *Emit) Error!void { |
| 85 | if (is_obj) { | 85 | if (is_obj) { |
| 86 | @panic("TODO"); | 86 | @panic("TODO"); |
| 87 | } else { | 87 | } else { |
| 88 | writeUleb128(code, 1 + @intFromEnum(indirect_func_idx)); | 88 | writeSleb128(code, 1 + @intFromEnum(indirect_func_idx)); |
| 89 | } | 89 | } |
| 90 | inst += 1; | 90 | inst += 1; |
| 91 | continue :loop tags[inst]; | 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,6 +933,7 @@ pub fn finish(f: *Flush, wasm: *Wasm) !void { |
| 933 | var segment_offset: u32 = 0; | 933 | var segment_offset: u32 = 0; |
| 934 | var group_start_addr: u32 = data_vaddr; | 934 | var group_start_addr: u32 = data_vaddr; |
| 935 | var group_end_addr = f.data_segment_groups.items[group_index].end_addr; | 935 | var group_end_addr = f.data_segment_groups.items[group_index].end_addr; |
| 936 | var first_segment_in_group = true; | ||
| 936 | for (segment_ids, segment_vaddrs) |segment_id, segment_vaddr| { | 937 | for (segment_ids, segment_vaddrs) |segment_id, segment_vaddr| { |
| 937 | if (segment_vaddr >= group_end_addr) { | 938 | if (segment_vaddr >= group_end_addr) { |
| 938 | try binary_bytes.appendNTimes(gpa, 0, group_end_addr - group_start_addr - segment_offset); | 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,8 +945,10 @@ pub fn finish(f: *Flush, wasm: *Wasm) !void { |
| 944 | group_start_addr = group_end_addr; | 945 | group_start_addr = group_end_addr; |
| 945 | group_end_addr = f.data_segment_groups.items[group_index].end_addr; | 946 | group_end_addr = f.data_segment_groups.items[group_index].end_addr; |
| 946 | segment_offset = 0; | 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 | const group_size = group_end_addr - group_start_addr; | 952 | const group_size = group_end_addr - group_start_addr; |
| 950 | log.debug("emit data section group, {d} bytes", .{group_size}); | 953 | log.debug("emit data section group, {d} bytes", .{group_size}); |
| 951 | const flags: Object.DataSegmentFlags = if (segment_id.isPassive(wasm)) .passive else .active; | 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,6 +1066,7 @@ test "tag name with signed enum values" { |
| 1066 | test "tag name with large enum values" { | 1066 | test "tag name with large enum values" { |
| 1067 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | 1067 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; |
| 1068 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; | 1068 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; |
| 1069 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; | ||
| 1069 | 1070 | ||
| 1070 | const Kdf = enum(u128) { | 1071 | const Kdf = enum(u128) { |
| 1071 | aes_kdf = 0xea4f8ac1080d74bf60448a629af3d9c9, | 1072 | aes_kdf = 0xea4f8ac1080d74bf60448a629af3d9c9, |
test/behavior/field_parent_ptr.zig+3| ... | @@ -1033,6 +1033,7 @@ test "@fieldParentPtr packed struct first zero-bit field" { | ... | @@ -1033,6 +1033,7 @@ test "@fieldParentPtr packed struct first zero-bit field" { |
| 1033 | if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; | 1033 | if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; |
| 1034 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; | 1034 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; |
| 1035 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | 1035 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; |
| 1036 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; | ||
| 1036 | 1037 | ||
| 1037 | const C = packed struct { | 1038 | const C = packed struct { |
| 1038 | a: u0 = 0, | 1039 | a: u0 = 0, |
| ... | @@ -1139,6 +1140,7 @@ test "@fieldParentPtr packed struct middle zero-bit field" { | ... | @@ -1139,6 +1140,7 @@ test "@fieldParentPtr packed struct middle zero-bit field" { |
| 1139 | if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; | 1140 | if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; |
| 1140 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; | 1141 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; |
| 1141 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | 1142 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; |
| 1143 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; | ||
| 1142 | 1144 | ||
| 1143 | const C = packed struct { | 1145 | const C = packed struct { |
| 1144 | a: f32 = 3.14, | 1146 | a: f32 = 3.14, |
| ... | @@ -1245,6 +1247,7 @@ test "@fieldParentPtr packed struct last zero-bit field" { | ... | @@ -1245,6 +1247,7 @@ test "@fieldParentPtr packed struct last zero-bit field" { |
| 1245 | if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; | 1247 | if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; |
| 1246 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; | 1248 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; |
| 1247 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | 1249 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; |
| 1250 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; | ||
| 1248 | 1251 | ||
| 1249 | const C = packed struct { | 1252 | const C = packed struct { |
| 1250 | a: f32 = 3.14, | 1253 | a: f32 = 3.14, |
test/behavior/struct.zig+1| ... | @@ -749,6 +749,7 @@ test "packed struct with fp fields" { | ... | @@ -749,6 +749,7 @@ test "packed struct with fp fields" { |
| 749 | if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; | 749 | if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; |
| 750 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; | 750 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; |
| 751 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | 751 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; |
| 752 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; | ||
| 752 | 753 | ||
| 753 | const S = packed struct { | 754 | const S = packed struct { |
| 754 | data0: f32, | 755 | data0: f32, |
test/behavior/union.zig+1| ... | @@ -2217,6 +2217,7 @@ test "matching captures causes union equivalence" { | ... | @@ -2217,6 +2217,7 @@ test "matching captures causes union equivalence" { |
| 2217 | test "signed enum tag with negative value" { | 2217 | test "signed enum tag with negative value" { |
| 2218 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO | 2218 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 2219 | if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; | 2219 | if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; |
| 2220 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; | ||
| 2220 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; | 2221 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; |
| 2221 | 2222 | ||
| 2222 | const Enum = enum(i8) { | 2223 | const Enum = enum(i8) { |
test/behavior/vector.zig+2| ... | @@ -9,6 +9,7 @@ const expectEqual = std.testing.expectEqual; | ... | @@ -9,6 +9,7 @@ const expectEqual = std.testing.expectEqual; |
| 9 | test "implicit cast vector to array - bool" { | 9 | test "implicit cast vector to array - bool" { |
| 10 | if (builtin.cpu.arch == .aarch64_be and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest; | 10 | if (builtin.cpu.arch == .aarch64_be and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest; |
| 11 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | 11 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; |
| 12 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; | ||
| 12 | 13 | ||
| 13 | const S = struct { | 14 | const S = struct { |
| 14 | fn doTheTest() !void { | 15 | fn doTheTest() !void { |
| ... | @@ -32,6 +33,7 @@ test "implicit cast vector to array - bool" { | ... | @@ -32,6 +33,7 @@ test "implicit cast vector to array - bool" { |
| 32 | 33 | ||
| 33 | test "implicit cast array to vector - bool" { | 34 | test "implicit cast array to vector - bool" { |
| 34 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | 35 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; |
| 36 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; | ||
| 35 | 37 | ||
| 36 | const S = struct { | 38 | const S = struct { |
| 37 | fn doTheTest() !void { | 39 | fn doTheTest() !void { |
test/src/Cases.zig-4| ... | @@ -370,10 +370,6 @@ fn addFromDirInner( | ... | @@ -370,10 +370,6 @@ fn addFromDirInner( |
| 370 | const resolved_target = b.resolveTargetQuery(target_query); | 370 | const resolved_target = b.resolveTargetQuery(target_query); |
| 371 | const target = &resolved_target.result; | 371 | const target = &resolved_target.result; |
| 372 | for (backends) |backend| { | 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 | if (backend == .selfhosted and | 373 | if (backend == .selfhosted and |
| 378 | target.cpu.arch != .aarch64 and target.cpu.arch != .wasm32 and target.cpu.arch != .x86_64 and target.cpu.arch != .spirv64) | 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,18 +1381,16 @@ const test_targets = blk: { |
| 1381 | 1381 | ||
| 1382 | // WASI Targets | 1382 | // WASI Targets |
| 1383 | 1383 | ||
| 1384 | // Disabled due to no active maintainer (feel free to fix the failures | 1384 | .{ |
| 1385 | // and then re-enable at any time). The failures occur due to backend | 1385 | .target = .{ |
| 1386 | // miscompilation of different AIR from the frontend. | 1386 | .cpu_arch = .wasm32, |
| 1387 | //.{ | 1387 | .os_tag = .wasi, |
| 1388 | // .target = .{ | 1388 | .abi = .none, |
| 1389 | // .cpu_arch = .wasm32, | 1389 | }, |
| 1390 | // .os_tag = .wasi, | 1390 | .skip_modules = &.{ "compiler-rt", "std" }, |
| 1391 | // .abi = .none, | 1391 | .use_llvm = false, |
| 1392 | // }, | 1392 | .use_lld = false, |
| 1393 | // .use_llvm = false, | 1393 | }, |
| 1394 | // .use_lld = false, | ||
| 1395 | //}, | ||
| 1396 | .{ | 1394 | .{ |
| 1397 | .target = .{ | 1395 | .target = .{ |
| 1398 | .cpu_arch = .wasm32, | 1396 | .cpu_arch = .wasm32, |