aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend_proc.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2022-02-01 14:11:19 +0000
committergingerBill <bill@gingerbill.org>2022-02-01 14:11:19 +0000
commiteac74631ecb74689dbe6bb1e1d07cd15f1fc677a (patch)
tree8308eaba01fbc60c30286f9aaabbe04f1ade05f0 /src/llvm_backend_proc.cpp
parent85706d559d06998895b27710f5e4f4643443b032 (diff)
Correct debug information logic for procedure parameters
Diffstat (limited to 'src/llvm_backend_proc.cpp')
-rw-r--r--src/llvm_backend_proc.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/llvm_backend_proc.cpp b/src/llvm_backend_proc.cpp
index 9f9fe7c7a..7a6fac603 100644
--- a/src/llvm_backend_proc.cpp
+++ b/src/llvm_backend_proc.cpp
@@ -473,6 +473,8 @@ void lb_begin_procedure_body(lbProcedure *p) {
}
lbArgType *arg_type = &ft->args[param_index];
+ defer (param_index += 1);
+
if (arg_type->kind == lbArg_Ignore) {
continue;
} else if (arg_type->kind == lbArg_Direct) {
@@ -487,20 +489,19 @@ void lb_begin_procedure_body(lbProcedure *p) {
param.type = e->type;
lbValue ptr = lb_address_from_load_or_generate_local(p, param);
+ GB_ASSERT(LLVMIsAAllocaInst(ptr.value));
lb_add_entity(p->module, e, ptr);
- // lb_add_debug_local_variable(p, ptr.value, e->type, e->token);
+ lb_add_debug_param_variable(p, ptr.value, e->type, e->token, param_index+1);
}
} else if (arg_type->kind == lbArg_Indirect) {
if (e->token.string.len != 0 && !is_blank_ident(e->token.string)) {
lbValue ptr = {};
ptr.value = LLVMGetParam(p->value, param_offset+param_index);
ptr.type = alloc_type_pointer(e->type);
-
lb_add_entity(p->module, e, ptr);
- // lb_add_debug_local_variable(p, ptr.value, e->type, e->token);
+ lb_add_debug_param_variable(p, ptr.value, e->type, e->token, param_index+1);
}
}
- param_index += 1;
}
}