diff options
| author | Veikka Tuominen <git@vexu.eu> | 2022-03-21 15:05:21 +0200 |
|---|---|---|
| committer | Veikka Tuominen <git@vexu.eu> | 2022-03-21 15:05:21 +0200 |
| commit | 59668fbe802be744c200ea9fd38fda28f5f951c1 (patch) | |
| tree | e456aea2d79f989f048c642106fc33009aad2afd | |
| parent | a31fe0ff12270ba2f957c2a957941a23f2143ad5 (diff) | |
| download | zig-59668fbe802be744c200ea9fd38fda28f5f951c1.tar.gz zig-59668fbe802be744c200ea9fd38fda28f5f951c1.zip | |
stage2: add test for fixed issue
Closes #11157
| -rw-r--r-- | test/behavior/comptime_memory.zig | 50 |
1 files changed, 30 insertions, 20 deletions
diff --git a/test/behavior/comptime_memory.zig b/test/behavior/comptime_memory.zig index 24a774aeb6..17cee27771 100644 --- a/test/behavior/comptime_memory.zig +++ b/test/behavior/comptime_memory.zig @@ -5,10 +5,8 @@ const ptr_size = @sizeOf(usize); test "type pun signed and unsigned as single pointer" { if (builtin.zig_backend == .stage1) return error.SkipZigTest; - if (builtin.zig_backend != .stage1) { - // TODO https://github.com/ziglang/zig/issues/9646 - return error.SkipZigTest; - } + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO comptime { var x: u32 = 0; @@ -20,10 +18,7 @@ test "type pun signed and unsigned as single pointer" { test "type pun signed and unsigned as many pointer" { if (builtin.zig_backend == .stage1) return error.SkipZigTest; - if (builtin.zig_backend != .stage1) { - // TODO https://github.com/ziglang/zig/issues/9646 - return error.SkipZigTest; - } + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO comptime { var x: u32 = 0; @@ -35,10 +30,7 @@ test "type pun signed and unsigned as many pointer" { test "type pun signed and unsigned as array pointer" { if (builtin.zig_backend == .stage1) return error.SkipZigTest; - if (builtin.zig_backend != .stage1) { - // TODO https://github.com/ziglang/zig/issues/9646 - return error.SkipZigTest; - } + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO comptime { var x: u32 = 0; @@ -82,10 +74,7 @@ test "type pun signed and unsigned as array pointer" { test "type pun value and struct" { if (builtin.zig_backend == .stage1) return error.SkipZigTest; - if (builtin.zig_backend != .stage1) { - // TODO https://github.com/ziglang/zig/issues/9646 - return error.SkipZigTest; - } + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO comptime { const StructOfU32 = extern struct { x: u32 }; @@ -102,10 +91,8 @@ fn bigToNativeEndian(comptime T: type, v: T) T { } test "type pun endianness" { if (builtin.zig_backend == .stage1) return error.SkipZigTest; - if (builtin.zig_backend != .stage1) { - // TODO https://github.com/ziglang/zig/issues/9646 - return error.SkipZigTest; - } + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO comptime { const StructOfBytes = extern struct { x: [4]u8 }; @@ -412,3 +399,26 @@ test "offset field ptr by enclosing array element size" { } } } + +test "accessing reinterpreted memory of parent object" { + if (builtin.zig_backend == .stage1) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO + const S = extern struct { + a: f32, + b: [4]u8, + c: f32, + }; + const expected = if (endian == .Little) 102 else 38; + + comptime { + const x = S{ + .a = 1.5, + .b = [_]u8{ 1, 2, 3, 4 }, + .c = 2.6, + }; + const ptr = &x.b[0]; + const b = @ptrCast([*c]const u8, ptr)[5]; + try testing.expect(b == expected); + } +} |
