commit 85610a9aff70b3ef77ae63289f8adde1ce5cac37 (tree) parent b6a6f05c0d139ebb572bbc6672d8ecfe5e63d89f Author: Cody Tapscott <topolarity@tapscott.me> Date: Wed, 2 Mar 2022 21:55:53 -0700 stage2 llvm: Lower 0-bit field-ptr as ptr-to-void Diffstat:
| M | src/codegen/llvm.zig | | | 2 | +- |
| M | test/behavior/optional.zig | | | 5 | ++++- |
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig @@ -2882,7 +2882,7 @@ pub const FuncGen = struct { const bin_op = self.air.extraData(Air.Bin, ty_pl.payload).data; const ptr_ty = self.air.typeOf(bin_op.lhs); const elem_ty = ptr_ty.childType(); - if (!elem_ty.hasRuntimeBits()) return null; + if (!elem_ty.hasRuntimeBits()) return self.dg.lowerPtrToVoid(ptr_ty); const base_ptr = try self.resolveInst(bin_op.lhs); const rhs = try self.resolveInst(bin_op.rhs); diff --git a/test/behavior/optional.zig b/test/behavior/optional.zig @@ -273,7 +273,10 @@ test "0-bit child type coerced to optional return ptr result location" { } test "0-bit child type coerced to optional" { - if (builtin.zig_backend != .stage1) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_x86_64) 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 doTheTest() !void {