aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2022-11-13 23:50:45 +0000
committergingerBill <bill@gingerbill.org>2022-11-13 23:50:45 +0000
commitd2019e3e4d4b45c34bdc0ef7cf7d630ee61a02fb (patch)
treec9d670d6cb9f4c506073d585c7ac30c89b66ae8d /src
parent489e8dc59272cd0db755da53a2c1de362e4175b3 (diff)
Enforce pointer cast
Diffstat (limited to 'src')
-rw-r--r--src/llvm_backend.cpp4
-rw-r--r--src/llvm_backend_expr.cpp3
-rw-r--r--src/llvm_backend_proc.cpp1
3 files changed, 5 insertions, 3 deletions
diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp
index 2ee292880..594224e6a 100644
--- a/src/llvm_backend.cpp
+++ b/src/llvm_backend.cpp
@@ -962,7 +962,7 @@ void lb_internal_dynamic_map_set(lbProcedure *p, lbValue const &map_ptr, Type *m
}
}
-void lb_dynamic_map_reserve(lbProcedure *p, lbValue const &map_ptr, isize const capacity, TokenPos const &pos) {
+lbValue lb_dynamic_map_reserve(lbProcedure *p, lbValue const &map_ptr, isize const capacity, TokenPos const &pos) {
GB_ASSERT(!build_context.no_dynamic_literals);
String proc_name = {};
@@ -975,7 +975,7 @@ void lb_dynamic_map_reserve(lbProcedure *p, lbValue const &map_ptr, isize const
args[1] = lb_gen_map_info_ptr(p->module, type_deref(map_ptr.type));
args[2] = lb_const_int(p->module, t_uint, capacity);
args[3] = lb_emit_source_code_location_as_global(p, proc_name, pos);
- lb_emit_runtime_call(p, "__dynamic_map_reserve", args);
+ return lb_emit_runtime_call(p, "__dynamic_map_reserve", args);
}
diff --git a/src/llvm_backend_expr.cpp b/src/llvm_backend_expr.cpp
index e58c84c9c..034682855 100644
--- a/src/llvm_backend_expr.cpp
+++ b/src/llvm_backend_expr.cpp
@@ -4131,7 +4131,8 @@ lbAddr lb_build_addr_compound_lit(lbProcedure *p, Ast *expr) {
}
GB_ASSERT(!build_context.no_dynamic_literals);
- lb_dynamic_map_reserve(p, v.addr, 2*cl->elems.count, pos);
+ lbValue err = lb_dynamic_map_reserve(p, v.addr, 2*cl->elems.count, pos);
+ gb_unused(err);
for_array(field_index, cl->elems) {
Ast *elem = cl->elems[field_index];
diff --git a/src/llvm_backend_proc.cpp b/src/llvm_backend_proc.cpp
index 2e508a939..510479440 100644
--- a/src/llvm_backend_proc.cpp
+++ b/src/llvm_backend_proc.cpp
@@ -599,6 +599,7 @@ void lb_begin_procedure_body(lbProcedure *p) {
p->entity->decl_info != nullptr &&
p->entity->decl_info->defer_use_count == 0) {
lbValue val = lb_emit_struct_ep(p, p->return_ptr.addr, cast(i32)i);
+ val = lb_emit_conv(p, val, alloc_type_pointer(e->type));
lb_add_entity(p->module, e, val);
lb_add_debug_local_variable(p, val.value, e->type, e->token);