aboutsummaryrefslogtreecommitdiff
path: root/src/analyze.cpp
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2019-01-08 10:57:39 -0500
committerAndrew Kelley <andrew@ziglang.org>2019-01-08 11:53:51 -0500
commitaa65b946711d6f51050977880f64a70f13637e45 (patch)
tree0a1ca1521b83a90a1909d9b6d60bc0457b1303fa /src/analyze.cpp
parent013c7b24d2a2c1f81d2fbcd7c2d07ed582b7acd9 (diff)
downloadzig-aa65b946711d6f51050977880f64a70f13637e45.tar.gz
zig-aa65b946711d6f51050977880f64a70f13637e45.zip
fix debug info for function pointers
found when testing against LLVM 8 see https://bugs.llvm.org/show_bug.cgi?id=40198
Diffstat (limited to 'src/analyze.cpp')
-rw-r--r--src/analyze.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/analyze.cpp b/src/analyze.cpp
index b9794114a0..af65838eae 100644
--- a/src/analyze.cpp
+++ b/src/analyze.cpp
@@ -1220,7 +1220,10 @@ ZigType *get_fn_type(CodeGen *g, FnTypeId *fn_type_id) {
fn_type->data.fn.raw_type_ref = LLVMFunctionType(gen_return_type->type_ref,
gen_param_types.items, (unsigned int)gen_param_types.length, fn_type_id->is_var_args);
fn_type->type_ref = LLVMPointerType(fn_type->data.fn.raw_type_ref, 0);
- fn_type->di_type = ZigLLVMCreateSubroutineType(g->dbuilder, param_di_types.items, (int)param_di_types.length, 0);
+ fn_type->data.fn.raw_di_type = ZigLLVMCreateSubroutineType(g->dbuilder, param_di_types.items, (int)param_di_types.length, 0);
+ fn_type->di_type = ZigLLVMCreateDebugPointerType(g->dbuilder, fn_type->data.fn.raw_di_type,
+ LLVMStoreSizeOfType(g->target_data_ref, fn_type->type_ref),
+ LLVMABIAlignmentOfType(g->target_data_ref, fn_type->type_ref), "");
}
g->fn_type_table.put(&fn_type->data.fn.fn_type_id, fn_type);