commit 5fe9f88b13f37e14fcb91e155e3e686eccb89dfc (tree)
parent 6635360dbdbd6793b741648d51d25f12550e01db
Author: Veikka Tuominen <git@vexu.eu>
Date: Wed, 22 May 2024 11:54:38 +0300
Merge pull request #20023 from Vexu/fixes
Minor LLVM backend fixes
Diffstat:
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig
@@ -3775,6 +3775,7 @@ pub const Object = struct {
.float,
.enum_tag,
=> {},
+ .opt => {}, // pointer like optional expected
else => unreachable,
}
const bits = ty.bitSize(mod);
@@ -4376,7 +4377,7 @@ pub const Object = struct {
.int => try o.builder.castConst(
.inttoptr,
try o.builder.intConst(try o.lowerType(Type.usize), offset),
- .ptr,
+ try o.lowerType(Type.fromInterned(ptr.ty)),
),
.eu_payload => |eu_ptr| try o.lowerPtr(
eu_ptr,
diff --git a/test/behavior/packed-struct.zig b/test/behavior/packed-struct.zig
@@ -1304,3 +1304,10 @@ test "2-byte packed struct argument in C calling convention" {
try S.bar(s);
}
}
+
+test "packed struct contains optional pointer" {
+ const foo: packed struct {
+ a: ?*@This() = null,
+ } = .{};
+ try expect(foo.a == null);
+}