authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2022-11-07 12:05:05+01:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2022-11-08 13:42:58+01:00
log35bd5363eed17270f1d3f96b8b1579126b12048a
tree68f2805c014fe9c9591d1c0d9649755be22312bd
parent0de56d1722a50435696d7bdc8900ca4206e12d70

aarch64: implement isNull() for non-pointer optionals


1 files changed, 6 insertions(+), 1 deletions(-)

src/arch/aarch64/CodeGen.zig+6-1
...@@ -4601,7 +4601,12 @@ fn isNull(self: *Self, operand_bind: ReadArg.Bind, operand_ty: Type) !MCValue {...@@ -4601,7 +4601,12 @@ fn isNull(self: *Self, operand_bind: ReadArg.Bind, operand_ty: Type) !MCValue {
4601 const imm_bind: ReadArg.Bind = .{ .mcv = .{ .immediate = 0 } };4601 const imm_bind: ReadArg.Bind = .{ .mcv = .{ .immediate = 0 } };
4602 return self.cmp(operand_bind, imm_bind, Type.usize, .eq);4602 return self.cmp(operand_bind, imm_bind, Type.usize, .eq);
4603 } else {4603 } else {
4604 return self.fail("TODO implement non-pointer optionals", .{});4604 var buf: Type.Payload.ElemType = undefined;
4605 const payload_ty = operand_ty.optionalChild(&buf);
4606 const sentinel_ty = if (payload_ty.hasRuntimeBitsIgnoreComptime()) Type.bool else operand_ty;
4607
4608 const imm_bind: ReadArg.Bind = .{ .mcv = .{ .immediate = 0 } };
4609 return self.cmp(operand_bind, imm_bind, sentinel_ty, .eq);
4605 }4610 }
4606}4611}
46074612