authorgravatar for topolarity@tapscott.meCody Tapscott <topolarity@tapscott.me> 2022-03-02 21:55:53-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-03-03 13:08:14-07:00
log85610a9aff70b3ef77ae63289f8adde1ce5cac37
tree3dd179023e89a6a8af5fd21b4f8df2e48fac78aa
parentb6a6f05c0d139ebb572bbc6672d8ecfe5e63d89f

stage2 llvm: Lower 0-bit field-ptr as ptr-to-void


2 files changed, 5 insertions(+), 2 deletions(-)

src/codegen/llvm.zig+1-1
......@@ -2882,7 +2882,7 @@ pub const FuncGen = struct {
28822882 const bin_op = self.air.extraData(Air.Bin, ty_pl.payload).data;
28832883 const ptr_ty = self.air.typeOf(bin_op.lhs);
28842884 const elem_ty = ptr_ty.childType();
2885 if (!elem_ty.hasRuntimeBits()) return null;
2885 if (!elem_ty.hasRuntimeBits()) return self.dg.lowerPtrToVoid(ptr_ty);
28862886
28872887 const base_ptr = try self.resolveInst(bin_op.lhs);
28882888 const rhs = try self.resolveInst(bin_op.rhs);
test/behavior/optional.zig+4-1
......@@ -273,7 +273,10 @@ test "0-bit child type coerced to optional return ptr result location" {
273273}
274274
275275test "0-bit child type coerced to optional" {
276 if (builtin.zig_backend != .stage1) return error.SkipZigTest; // TODO
276 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
277 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
278 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
279 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
277280
278281 const S = struct {
279282 fn doTheTest() !void {