diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index 32a74cb53..95f512873 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -10122,7 +10122,15 @@ lbValue lb_emit_comp(lbProcedure *p, TokenKind op_kind, lbValue left, lbValue ri case Token_CmpEq: pred = LLVMIntEQ; break; case Token_NotEq: pred = LLVMIntNE; break; } - res.value = LLVMBuildICmp(p->builder, pred, left.value, right.value, ""); + LLVMValueRef lhs = left.value; + LLVMValueRef rhs = right.value; + if (LLVMTypeOf(lhs) != LLVMTypeOf(rhs)) { + if (lb_is_type_kind(LLVMTypeOf(lhs), LLVMPointerTypeKind)) { + rhs = LLVMBuildPointerCast(p->builder, rhs, LLVMTypeOf(lhs), ""); + } + } + + res.value = LLVMBuildICmp(p->builder, pred, lhs, rhs, ""); } else if (is_type_float(a)) { LLVMRealPredicate pred = {}; switch (op_kind) {