LLVM: handle aggregate_init for packed structs

This commit is contained in:
Andrew Kelley
2022-03-27 14:21:32 -07:00
parent 052079c994
commit 6d2ec7a4e3
3 changed files with 57 additions and 0 deletions

View File

@@ -1294,3 +1294,24 @@ test "loading a struct pointer perfoms a copy" {
try expect(s2.b == 2);
try expect(s2.c == 3);
}
test "packed struct aggregate init" {
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
const S = struct {
fn foo(a: i2, b: i6) u8 {
return @bitCast(u8, P{ .a = a, .b = b });
}
const P = packed struct {
a: i2,
b: i6,
};
};
const result = @bitCast(u8, S.foo(1, 2));
try expect(result == 9);
}