aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend_proc.cpp
diff options
context:
space:
mode:
authorgingerBill <gingerBill@users.noreply.github.com>2024-04-04 18:09:12 +0100
committerGitHub <noreply@github.com>2024-04-04 18:09:12 +0100
commitfbff2b4fd6a1a4b780b14f4fd9e77e2abfc43962 (patch)
treedfb9addcf8f7c5a8f592c9c9063b5a4c6316f5cb /src/llvm_backend_proc.cpp
parent7f0ca315b3261bb323260018d08b868a0b313c35 (diff)
parenta7056f2b4f8ac7c5fe78b00cbae686da4867e206 (diff)
Merge pull request #3372 from laytan/fix-lbarg-ignore-logic
fix lbArg_Ignore logic
Diffstat (limited to 'src/llvm_backend_proc.cpp')
-rw-r--r--src/llvm_backend_proc.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/llvm_backend_proc.cpp b/src/llvm_backend_proc.cpp
index 2c79499f4..8ce116715 100644
--- a/src/llvm_backend_proc.cpp
+++ b/src/llvm_backend_proc.cpp
@@ -578,7 +578,10 @@ gb_internal void lb_begin_procedure_body(lbProcedure *p) {
defer (param_index += 1);
if (arg_type->kind == lbArg_Ignore) {
- continue;
+ // Even though it is an ignored argument, it might still be referenced in the
+ // body.
+ lbValue dummy = lb_add_local_generated(p, e->type, false).addr;
+ lb_add_entity(p->module, e, dummy);
} else if (arg_type->kind == lbArg_Direct) {
if (e->token.string.len != 0 && !is_blank_ident(e->token.string)) {
LLVMTypeRef param_type = lb_type(p->module, e->type);
@@ -1051,6 +1054,7 @@ gb_internal lbValue lb_emit_call(lbProcedure *p, lbValue value, Array<lbValue> c
Type *original_type = e->type;
lbArgType *arg = &ft->args[param_index];
if (arg->kind == lbArg_Ignore) {
+ param_index += 1;
continue;
}