aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2022-11-20 01:34:57 +0000
committergingerBill <bill@gingerbill.org>2022-11-20 01:34:57 +0000
commitc663566cd5778bfe6782835e897e212f91d5b1cb (patch)
treed6f87f70613c1e102aac35c82402b3b0e42a1089 /src
parent13d052027fa5995c7a1f93af018a26f2aba3ff27 (diff)
Fixed comparison against nil for maps
Diffstat (limited to 'src')
-rw-r--r--src/llvm_backend_expr.cpp11
1 files changed, 3 insertions, 8 deletions
diff --git a/src/llvm_backend_expr.cpp b/src/llvm_backend_expr.cpp
index 034682855..389bfb151 100644
--- a/src/llvm_backend_expr.cpp
+++ b/src/llvm_backend_expr.cpp
@@ -2724,18 +2724,13 @@ lbValue lb_emit_comp_against_nil(lbProcedure *p, TokenKind op_kind, lbValue x) {
case Type_Map:
{
- lbValue map_ptr = lb_address_from_load_or_generate_local(p, x);
-
- unsigned indices[2] = {0, 0};
- lbValue hashes_data = lb_emit_struct_ep(p, map_ptr, 0);
- lbValue hashes_data_ptr_ptr = lb_emit_struct_ep(p, hashes_data, 0);
- LLVMValueRef hashes_data_ptr = LLVMBuildLoad2(p->builder, llvm_addr_type(p->module, hashes_data_ptr_ptr), hashes_data_ptr_ptr.value, "");
+ lbValue data_ptr = lb_emit_struct_ev(p, x, 0);
if (op_kind == Token_CmpEq) {
- res.value = LLVMBuildIsNull(p->builder, hashes_data_ptr, "");
+ res.value = LLVMBuildIsNull(p->builder, data_ptr.value, "");
return res;
} else {
- res.value = LLVMBuildIsNotNull(p->builder, hashes_data_ptr, "");
+ res.value = LLVMBuildIsNotNull(p->builder, data_ptr.value, "");
return res;
}
}