Commit 35bd5363ee

Jakub Konka <kubkon@jakubkonka.com>
2022-11-07 12:05:05
aarch64: implement isNull() for non-pointer optionals
1 parent 0de56d1
Changed files (1)
src
arch
aarch64
src/arch/aarch64/CodeGen.zig
@@ -4601,7 +4601,12 @@ fn isNull(self: *Self, operand_bind: ReadArg.Bind, operand_ty: Type) !MCValue {
         const imm_bind: ReadArg.Bind = .{ .mcv = .{ .immediate = 0 } };
         return self.cmp(operand_bind, imm_bind, Type.usize, .eq);
     } else {
-        return self.fail("TODO implement non-pointer optionals", .{});
+        var buf: Type.Payload.ElemType = undefined;
+        const payload_ty = operand_ty.optionalChild(&buf);
+        const sentinel_ty = if (payload_ty.hasRuntimeBitsIgnoreComptime()) Type.bool else operand_ty;
+
+        const imm_bind: ReadArg.Bind = .{ .mcv = .{ .immediate = 0 } };
+        return self.cmp(operand_bind, imm_bind, sentinel_ty, .eq);
     }
 }