瀏覽代碼

Add support for SoaPointer nil comparison in lb_emit_comp_against_nil

bogwi 4 月之前
父節點
當前提交
904a64a45e
共有 1 個文件被更改,包括 12 次插入0 次删除
  1. 12 0
      src/llvm_backend_expr.cpp

+ 12 - 0
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:
 		{