aboutsummaryrefslogtreecommitdiff
path: root/src/analyze.cpp
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2019-10-15 17:58:26 -0400
committerAndrew Kelley <andrew@ziglang.org>2019-10-15 18:00:16 -0400
commit9050cd847a2a767df34bc3e0bbc9c789b8a49a91 (patch)
tree297aa589cd56f83773336b359519879e8c001f6e /src/analyze.cpp
parent7495fd8cb9eea3d571ec62eff069b443ac0e3a6a (diff)
downloadzig-9050cd847a2a767df34bc3e0bbc9c789b8a49a91.tar.gz
zig-9050cd847a2a767df34bc3e0bbc9c789b8a49a91.zip
fix non-byte-aligned packed struct field...
...passed as generic fn parameter causing invalid LLVM IR. closes #3460
Diffstat (limited to 'src/analyze.cpp')
-rw-r--r--src/analyze.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/analyze.cpp b/src/analyze.cpp
index 399966d041..92b221a2ec 100644
--- a/src/analyze.cpp
+++ b/src/analyze.cpp
@@ -8602,6 +8602,9 @@ static void resolve_llvm_types_fn_type(CodeGen *g, ZigType *fn_type) {
fn_type->llvm_di_type = ZigLLVMCreateDebugPointerType(g->dbuilder, fn_type->data.fn.raw_di_type,
LLVMStoreSizeOfType(g->target_data_ref, fn_type->llvm_type),
LLVMABIAlignmentOfType(g->target_data_ref, fn_type->llvm_type), "");
+
+ gen_param_types.deinit();
+ param_di_types.deinit();
}
void resolve_llvm_types_fn(CodeGen *g, ZigFn *fn) {
@@ -8636,6 +8639,9 @@ void resolve_llvm_types_fn(CodeGen *g, ZigFn *fn) {
fn->raw_type_ref = LLVMFunctionType(get_llvm_type(g, gen_return_type),
gen_param_types.items, gen_param_types.length, false);
fn->raw_di_type = ZigLLVMCreateSubroutineType(g->dbuilder, param_di_types.items, (int)param_di_types.length, 0);
+
+ param_di_types.deinit();
+ gen_param_types.deinit();
}
static void resolve_llvm_types_anyerror(CodeGen *g) {
@@ -8660,6 +8666,8 @@ static void resolve_llvm_types_anyerror(CodeGen *g) {
tag_debug_align_in_bits,
err_enumerators.items, err_enumerators.length,
get_llvm_di_type(g, g->err_tag_type), "");
+
+ err_enumerators.deinit();
}
static void resolve_llvm_types_async_frame(CodeGen *g, ZigType *frame_type, ResolveStatus wanted_resolve_status) {
@@ -8805,6 +8813,9 @@ static void resolve_llvm_types_any_frame(CodeGen *g, ZigType *any_frame_type, Re
nullptr, di_element_types.items, di_element_types.length, 0, nullptr, "");
ZigLLVMReplaceTemporary(g->dbuilder, frame_header_di_type, replacement_di_type);
+
+ field_types.deinit();
+ di_element_types.deinit();
}
static void resolve_llvm_types(CodeGen *g, ZigType *type, ResolveStatus wanted_resolve_status) {