aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend_utility.cpp
diff options
context:
space:
mode:
authorgingerBill <gingerBill@users.noreply.github.com>2026-01-30 10:49:55 +0000
committerGitHub <noreply@github.com>2026-01-30 10:49:55 +0000
commit19b545e7cb0b09a7c8b3424ca8276b9e37f8de80 (patch)
tree974b844bf082c526f6a12396c4a80adfc73b9a60 /src/llvm_backend_utility.cpp
parent8b745c3909a3482aebe27998d8b870286e448e35 (diff)
parent5a21213fa5e2c74d5021adb2a87f0cc441a38eab (diff)
Merge branch 'master' into bill/feature-using-stmt
Diffstat (limited to 'src/llvm_backend_utility.cpp')
-rw-r--r--src/llvm_backend_utility.cpp15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/llvm_backend_utility.cpp b/src/llvm_backend_utility.cpp
index 9ddbd1f9c..929239486 100644
--- a/src/llvm_backend_utility.cpp
+++ b/src/llvm_backend_utility.cpp
@@ -89,7 +89,7 @@ gb_internal LLVMValueRef lb_mem_zero_ptr_internal(lbProcedure *p, LLVMValueRef p
bool is_inlinable = false;
i64 const_len = 0;
- if (LLVMIsConstant(len)) {
+ if (!p->is_startup && LLVMIsConstant(len)) {
const_len = cast(i64)LLVMConstIntGetSExtValue(len);
// TODO(bill): Determine when it is better to do the `*.inline` versions
if (const_len <= lb_max_zero_init_size()) {
@@ -803,7 +803,12 @@ gb_internal lbValue lb_emit_union_cast(lbProcedure *p, lbValue value, Type *type
args[5] = lb_typeid(m, dst_type);
args[6] = lb_emit_conv(p, value_, t_rawptr);
}
- lb_emit_runtime_call(p, "type_assertion_check2", args);
+
+ char const *name = "type_assertion_check2_contextless";
+ if (p->context_stack.count > 0) {
+ name = "type_assertion_check2_with_context";
+ }
+ lb_emit_runtime_call(p, name, args);
}
return lb_emit_load(p, lb_emit_struct_ep(p, v.addr, 0));
@@ -877,7 +882,11 @@ gb_internal lbAddr lb_emit_any_cast_addr(lbProcedure *p, lbValue value, Type *ty
args[5] = dst_typeid;
args[6] = lb_emit_struct_ev(p, value, 0);
}
- lb_emit_runtime_call(p, "type_assertion_check2", args);
+ char const *name = "type_assertion_check2_contextless";
+ if (p->context_stack.count > 0) {
+ name = "type_assertion_check2_with_context";
+ }
+ lb_emit_runtime_call(p, name, args);
}
return lb_addr(lb_emit_struct_ep(p, v.addr, 0));