authorgravatar for luuk@degram.devLuuk de Gram <luuk@degram.dev> 2022-11-30 17:55:33+01:00
committergravatar for luuk@degram.devLuuk de Gram <luuk@degram.dev> 2022-11-30 21:01:09+01:00
log090deae41dbb79bcbe6a06d0bea0413f21576881
tree9f9d33dfcc05756b31816182c2022c386f1487dd
parent3933a4bac5179c30cb6a08d6f1e42f9b44ce9599
signaturelock-open Commit is signed but in an unrecognized format.

wasm: enable behavior tests for packed structs


8 files changed, 3 insertions(+), 34 deletions(-)

src/codegen.zig+2-2
......@@ -570,8 +570,8 @@ pub fn generateSymbol(
570570 // pointer may point to a decl which must be marked used
571571 // but can also result in a relocation. Therefore we handle those seperately.
572572 if (field_ty.zigTypeTag() == .Pointer) {
573 std.debug.print("Hit!\n", .{});
574 var tmp_list = try std.ArrayList(u8).initCapacity(code.allocator, field_ty.abiSize(target));
573 const field_size = math.cast(usize, field_ty.abiSize(target)) orelse return error.Overflow;
574 var tmp_list = try std.ArrayList(u8).initCapacity(code.allocator, field_size);
575575 defer tmp_list.deinit();
576576 switch (try generateSymbol(bin_file, src_loc, .{
577577 .ty = field_ty,
src/link/Wasm.zig+1-1
......@@ -1841,7 +1841,7 @@ fn setupStart(wasm: *Wasm) !void {
18411841/// Sets up the memory section of the wasm module, as well as the stack.
18421842fn setupMemory(wasm: *Wasm) !void {
18431843 log.debug("Setting up memory layout", .{});
1844 const page_size = std.wasm.page_size; // 65kb
1844 const page_size = std.wasm.page_size; // 64kb
18451845 // Use the user-provided stack size or else we use 1MB by default
18461846 const stack_size = wasm.base.options.stack_size_override orelse page_size * 16;
18471847 const stack_alignment = 16; // wasm's stack alignment as specified by tool-convention
test/behavior/bitcast.zig-6
......@@ -18,7 +18,6 @@ test "@bitCast iX -> uX (32, 64)" {
1818}
1919
2020test "@bitCast iX -> uX (8, 16, 128)" {
21 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
2221 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
2322 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
2423 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
......@@ -160,7 +159,6 @@ test "@bitCast packed structs at runtime and comptime" {
160159 // stage1 gets the wrong answer for a lot of targets
161160 return error.SkipZigTest;
162161 }
163 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
164162 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
165163 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
166164 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
......@@ -187,7 +185,6 @@ test "@bitCast packed structs at runtime and comptime" {
187185}
188186
189187test "@bitCast extern structs at runtime and comptime" {
190 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
191188 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
192189
193190 const Full = extern struct {
......@@ -218,7 +215,6 @@ test "@bitCast extern structs at runtime and comptime" {
218215}
219216
220217test "bitcast packed struct to integer and back" {
221 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
222218 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
223219 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
224220 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
......@@ -257,8 +253,6 @@ test "implicit cast to error union by returning" {
257253}
258254
259255test "bitcast packed struct literal to byte" {
260 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
261
262256 const Foo = packed struct {
263257 value: u8,
264258 };
test/behavior/bugs/12776.zig-1
......@@ -31,7 +31,6 @@ const CPU = packed struct {
3131test {
3232 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
3333 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
34 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
3534 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
3635
3736 var ram = try RAM.new();
test/behavior/bugs/9584.zig-1
......@@ -44,7 +44,6 @@ pub fn b(x: *X) !void {
4444}
4545
4646test {
47 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
4847 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
4948 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
5049 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
test/behavior/enum.zig-2
......@@ -1146,8 +1146,6 @@ test "size of enum with only one tag which has explicit integer tag type" {
11461146}
11471147
11481148test "switch on an extern enum with negative value" {
1149 if (@import("builtin").zig_backend == .stage2_wasm) return error.SkipZigTest;
1150
11511149 const Foo = enum(c_int) {
11521150 Bar = -1,
11531151 };
test/behavior/packed-struct.zig-9
......@@ -150,7 +150,6 @@ test "consistent size of packed structs" {
150150
151151test "correct sizeOf and offsets in packed structs" {
152152 if (builtin.zig_backend == .stage1) return error.SkipZigTest;
153 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
154153 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
155154 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
156155 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
......@@ -220,7 +219,6 @@ test "correct sizeOf and offsets in packed structs" {
220219
221220test "nested packed structs" {
222221 if (builtin.zig_backend == .stage1) return error.SkipZigTest;
223 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
224222 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
225223 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
226224 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
......@@ -267,7 +265,6 @@ test "nested packed structs" {
267265}
268266
269267test "regular in irregular packed struct" {
270 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
271268 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
272269 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
273270 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
......@@ -289,7 +286,6 @@ test "regular in irregular packed struct" {
289286
290287test "byte-aligned field pointer offsets" {
291288 if (builtin.zig_backend == .stage1) return error.SkipZigTest;
292 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
293289 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
294290 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
295291 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
......@@ -395,7 +391,6 @@ test "load pointer from packed struct" {
395391 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
396392 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
397393 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
398 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
399394
400395 const A = struct {
401396 index: u16,
......@@ -413,7 +408,6 @@ test "load pointer from packed struct" {
413408}
414409
415410test "@ptrToInt on a packed struct field" {
416 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
417411 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
418412 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
419413 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
......@@ -437,7 +431,6 @@ test "optional pointer in packed struct" {
437431 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
438432 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
439433 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
440 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
441434
442435 const T = packed struct { ptr: ?*const u8 };
443436 var n: u8 = 0;
......@@ -566,7 +559,6 @@ test "nested packed struct field access test" {
566559test "runtime init of unnamed packed struct type" {
567560 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
568561 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
569 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
570562 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
571563
572564 var z: u8 = 123;
......@@ -582,7 +574,6 @@ test "packed struct passed to callconv(.C) function" {
582574 if (builtin.zig_backend == .stage1) return error.SkipZigTest;
583575 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
584576 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
585 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
586577 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
587578
588579 const S = struct {
test/behavior/struct.zig-12
......@@ -386,7 +386,6 @@ const APackedStruct = packed struct {
386386
387387test "packed struct" {
388388 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
389 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
390389 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
391390 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
392391 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
......@@ -460,7 +459,6 @@ test "packed struct 24bits" {
460459
461460test "runtime struct initialization of bitfield" {
462461 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
463 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
464462 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
465463 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
466464 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
......@@ -504,7 +502,6 @@ test "packed struct fields are ordered from LSB to MSB" {
504502 return error.SkipZigTest;
505503 }
506504 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
507 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
508505 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
509506 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
510507 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
......@@ -525,7 +522,6 @@ test "packed struct fields are ordered from LSB to MSB" {
525522
526523test "implicit cast packed struct field to const ptr" {
527524 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
528 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
529525 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
530526 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
531527 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
......@@ -546,7 +542,6 @@ test "implicit cast packed struct field to const ptr" {
546542}
547543
548544test "zero-bit field in packed struct" {
549 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
550545 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
551546 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
552547
......@@ -591,7 +586,6 @@ const bit_field_1 = BitField1{
591586
592587test "bit field access" {
593588 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
594 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
595589 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
596590 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
597591 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
......@@ -647,7 +641,6 @@ test "default struct initialization fields" {
647641
648642test "packed array 24bits" {
649643 if (builtin.zig_backend == .stage1) return error.SkipZigTest;
650 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
651644 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
652645 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
653646 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
......@@ -735,7 +728,6 @@ const FooArrayOfAligned = packed struct {
735728};
736729
737730test "pointer to packed struct member in a stack variable" {
738 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
739731 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
740732 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
741733 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
......@@ -754,7 +746,6 @@ test "pointer to packed struct member in a stack variable" {
754746}
755747
756748test "packed struct with u0 field access" {
757 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
758749 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
759750 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
760751
......@@ -864,7 +855,6 @@ test "non-packed struct with u128 entry in union" {
864855}
865856
866857test "packed struct field passed to generic function" {
867 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
868858 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
869859 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
870860 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
......@@ -1298,7 +1288,6 @@ test "packed struct aggregate init" {
12981288 // stage1 fails this test on mips
12991289 return error.SkipZigTest;
13001290 }
1301 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
13021291 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
13031292 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
13041293 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
......@@ -1319,7 +1308,6 @@ test "packed struct aggregate init" {
13191308}
13201309
13211310test "packed struct field access via pointer" {
1322 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
13231311 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
13241312 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
13251313 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO