aboutsummaryrefslogtreecommitdiff
path: root/src/codegen
diff options
context:
space:
mode:
Diffstat (limited to 'src/codegen')
-rw-r--r--src/codegen/llvm.zig11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig
index 646633a90d..1a4bada192 100644
--- a/src/codegen/llvm.zig
+++ b/src/codegen/llvm.zig
@@ -2450,6 +2450,12 @@ pub const FuncGen = struct {
const operand = try self.resolveInst(un_op);
const operand_ty = self.air.typeOf(un_op);
const optional_ty = if (operand_is_ptr) operand_ty.childType() else operand_ty;
+ if (optional_ty.isPtrLikeOptional()) {
+ const optional_llvm_ty = try self.dg.llvmType(optional_ty);
+ const loaded = if (operand_is_ptr) self.builder.buildLoad(operand, "") else operand;
+ return self.builder.buildICmp(pred, loaded, optional_llvm_ty.constNull(), "");
+ }
+
var buf: Type.Payload.ElemType = undefined;
const payload_ty = optional_ty.optionalChild(&buf);
if (!payload_ty.hasCodeGenBits()) {
@@ -2459,11 +2465,6 @@ pub const FuncGen = struct {
return operand;
}
}
- if (optional_ty.isPtrLikeOptional()) {
- const optional_llvm_ty = try self.dg.llvmType(optional_ty);
- const loaded = if (operand_is_ptr) self.builder.buildLoad(operand, "") else operand;
- return self.builder.buildICmp(pred, loaded, optional_llvm_ty.constNull(), "");
- }
if (operand_is_ptr or isByRef(optional_ty)) {
const index_type = self.context.intType(32);