From 904a64a45e6b4286f84c438876f77352ebfcf016 Mon Sep 17 00:00:00 2001 From: bogwi Date: Tue, 6 May 2025 14:21:18 +0900 Subject: [PATCH] Add support for SoaPointer nil comparison in lb_emit_comp_against_nil --- src/llvm_backend_expr.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/llvm_backend_expr.cpp b/src/llvm_backend_expr.cpp index d313d65a3..da0de10c4 100644 --- a/src/llvm_backend_expr.cpp +++ b/src/llvm_backend_expr.cpp @@ -3146,6 +3146,18 @@ gb_internal lbValue lb_emit_comp_against_nil(lbProcedure *p, TokenKind op_kind, } } break; + + case Type_SoaPointer: + { + // NOTE(bill): An SoaPointer is essentially just a pointer for nil comparison + lbValue ptr = lb_emit_struct_ev(p, x, 0); // Extract the base pointer component (field 0) + if (op_kind == Token_CmpEq) { + res.value = LLVMBuildIsNull(p->builder, ptr.value, ""); + } else if (op_kind == Token_NotEq) { + res.value = LLVMBuildIsNotNull(p->builder, ptr.value, ""); + } + return res; + } case Type_Union: {