authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2016-02-04 14:02:37-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2016-02-04 14:02:37-07:00
logb87d0abefeeeed4d9ce981971a5e33a6d0932529
treef8f817222a2f2c49ad67fc6cfe1ca98b3278868f
parent25e74cb385dc353bcf0e56b35a6f1c7c8b13267e

fix debug info for bool type


5 files changed, 57 insertions(+), 27 deletions(-)

src/analyze.cpp+15-15
...@@ -211,7 +211,7 @@ TypeTableEntry *get_pointer_to_type(CodeGen *g, TypeTableEntry *child_type, bool...@@ -211,7 +211,7 @@ TypeTableEntry *get_pointer_to_type(CodeGen *g, TypeTableEntry *child_type, bool
211 if (!entry->zero_bits) {211 if (!entry->zero_bits) {
212 entry->type_ref = LLVMPointerType(child_type->type_ref, 0);212 entry->type_ref = LLVMPointerType(child_type->type_ref, 0);
213213
214 uint64_t debug_size_in_bits = LLVMSizeOfTypeInBits(g->target_data_ref, entry->type_ref);214 uint64_t debug_size_in_bits = 8*LLVMStoreSizeOfType(g->target_data_ref, entry->type_ref);
215 uint64_t debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, entry->type_ref);215 uint64_t debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, entry->type_ref);
216 assert(child_type->di_type);216 assert(child_type->di_type);
217 entry->di_type = LLVMZigCreateDebugPointerType(g->dbuilder, child_type->di_type,217 entry->di_type = LLVMZigCreateDebugPointerType(g->dbuilder, child_type->di_type,
...@@ -262,16 +262,16 @@ TypeTableEntry *get_maybe_type(CodeGen *g, TypeTableEntry *child_type) {...@@ -262,16 +262,16 @@ TypeTableEntry *get_maybe_type(CodeGen *g, TypeTableEntry *child_type) {
262 LLVMZigTag_DW_structure_type(), buf_ptr(&entry->name),262 LLVMZigTag_DW_structure_type(), buf_ptr(&entry->name),
263 compile_unit_scope, di_file, line);263 compile_unit_scope, di_file, line);
264264
265 uint64_t val_debug_size_in_bits = LLVMSizeOfTypeInBits(g->target_data_ref, child_type->type_ref);265 uint64_t val_debug_size_in_bits = 8*LLVMStoreSizeOfType(g->target_data_ref, child_type->type_ref);
266 uint64_t val_debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, child_type->type_ref);266 uint64_t val_debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, child_type->type_ref);
267 uint64_t val_offset_in_bits = 8*LLVMOffsetOfElement(g->target_data_ref, entry->type_ref, 0);267 uint64_t val_offset_in_bits = 8*LLVMOffsetOfElement(g->target_data_ref, entry->type_ref, 0);
268268
269 TypeTableEntry *bool_type = g->builtin_types.entry_bool;269 TypeTableEntry *bool_type = g->builtin_types.entry_bool;
270 uint64_t maybe_debug_size_in_bits = LLVMSizeOfTypeInBits(g->target_data_ref, bool_type->type_ref);270 uint64_t maybe_debug_size_in_bits = 8*LLVMStoreSizeOfType(g->target_data_ref, bool_type->type_ref);
271 uint64_t maybe_debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, bool_type->type_ref);271 uint64_t maybe_debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, bool_type->type_ref);
272 uint64_t maybe_offset_in_bits = 8*LLVMOffsetOfElement(g->target_data_ref, entry->type_ref, 1);272 uint64_t maybe_offset_in_bits = 8*LLVMOffsetOfElement(g->target_data_ref, entry->type_ref, 1);
273273
274 uint64_t debug_size_in_bits = LLVMSizeOfTypeInBits(g->target_data_ref, entry->type_ref);274 uint64_t debug_size_in_bits = 8*LLVMStoreSizeOfType(g->target_data_ref, entry->type_ref);
275 uint64_t debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, entry->type_ref);275 uint64_t debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, entry->type_ref);
276276
277 LLVMZigDIType *di_element_types[] = {277 LLVMZigDIType *di_element_types[] = {
...@@ -336,15 +336,15 @@ static TypeTableEntry *get_error_type(CodeGen *g, TypeTableEntry *child_type) {...@@ -336,15 +336,15 @@ static TypeTableEntry *get_error_type(CodeGen *g, TypeTableEntry *child_type) {
336 LLVMZigTag_DW_structure_type(), buf_ptr(&entry->name),336 LLVMZigTag_DW_structure_type(), buf_ptr(&entry->name),
337 compile_unit_scope, di_file, line);337 compile_unit_scope, di_file, line);
338338
339 uint64_t tag_debug_size_in_bits = LLVMSizeOfTypeInBits(g->target_data_ref, g->err_tag_type->type_ref);339 uint64_t tag_debug_size_in_bits = 8*LLVMStoreSizeOfType(g->target_data_ref, g->err_tag_type->type_ref);
340 uint64_t tag_debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, g->err_tag_type->type_ref);340 uint64_t tag_debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, g->err_tag_type->type_ref);
341 uint64_t tag_offset_in_bits = 8*LLVMOffsetOfElement(g->target_data_ref, entry->type_ref, 0);341 uint64_t tag_offset_in_bits = 8*LLVMOffsetOfElement(g->target_data_ref, entry->type_ref, 0);
342342
343 uint64_t value_debug_size_in_bits = LLVMSizeOfTypeInBits(g->target_data_ref, child_type->type_ref);343 uint64_t value_debug_size_in_bits = 8*LLVMStoreSizeOfType(g->target_data_ref, child_type->type_ref);
344 uint64_t value_debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, child_type->type_ref);344 uint64_t value_debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, child_type->type_ref);
345 uint64_t value_offset_in_bits = 8*LLVMOffsetOfElement(g->target_data_ref, entry->type_ref, 1);345 uint64_t value_offset_in_bits = 8*LLVMOffsetOfElement(g->target_data_ref, entry->type_ref, 1);
346346
347 uint64_t debug_size_in_bits = LLVMSizeOfTypeInBits(g->target_data_ref, entry->type_ref);347 uint64_t debug_size_in_bits = 8*LLVMStoreSizeOfType(g->target_data_ref, entry->type_ref);
348 uint64_t debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, entry->type_ref);348 uint64_t debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, entry->type_ref);
349349
350 LLVMZigDIType *di_element_types[] = {350 LLVMZigDIType *di_element_types[] = {
...@@ -393,7 +393,7 @@ TypeTableEntry *get_array_type(CodeGen *g, TypeTableEntry *child_type, uint64_t...@@ -393,7 +393,7 @@ TypeTableEntry *get_array_type(CodeGen *g, TypeTableEntry *child_type, uint64_t
393 buf_resize(&entry->name, 0);393 buf_resize(&entry->name, 0);
394 buf_appendf(&entry->name, "[%" PRIu64 "]%s", array_size, buf_ptr(&child_type->name));394 buf_appendf(&entry->name, "[%" PRIu64 "]%s", array_size, buf_ptr(&child_type->name));
395395
396 uint64_t debug_size_in_bits = LLVMSizeOfTypeInBits(g->target_data_ref, entry->type_ref);396 uint64_t debug_size_in_bits = 8*LLVMStoreSizeOfType(g->target_data_ref, entry->type_ref);
397 uint64_t debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, entry->type_ref);397 uint64_t debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, entry->type_ref);
398398
399 entry->di_type = LLVMZigCreateDebugArrayType(g->dbuilder, debug_size_in_bits,399 entry->di_type = LLVMZigCreateDebugArrayType(g->dbuilder, debug_size_in_bits,
...@@ -471,7 +471,7 @@ static TypeTableEntry *get_slice_type(CodeGen *g, TypeTableEntry *child_type, bo...@@ -471,7 +471,7 @@ static TypeTableEntry *get_slice_type(CodeGen *g, TypeTableEntry *child_type, bo
471 g->builtin_types.entry_isize->di_type,471 g->builtin_types.entry_isize->di_type,
472 };472 };
473 LLVMZigDIScope *compile_unit_scope = LLVMZigCompileUnitToScope(g->compile_unit);473 LLVMZigDIScope *compile_unit_scope = LLVMZigCompileUnitToScope(g->compile_unit);
474 uint64_t debug_size_in_bits = LLVMSizeOfTypeInBits(g->target_data_ref, entry->type_ref);474 uint64_t debug_size_in_bits = 8*LLVMStoreSizeOfType(g->target_data_ref, entry->type_ref);
475 uint64_t debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, entry->type_ref);475 uint64_t debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, entry->type_ref);
476 entry->di_type = LLVMZigCreateDebugStructType(g->dbuilder, compile_unit_scope,476 entry->di_type = LLVMZigCreateDebugStructType(g->dbuilder, compile_unit_scope,
477 buf_ptr(&entry->name), g->dummy_di_file, 0, debug_size_in_bits, debug_align_in_bits, 0,477 buf_ptr(&entry->name), g->dummy_di_file, 0, debug_size_in_bits, debug_align_in_bits, 0,
...@@ -944,7 +944,7 @@ static void resolve_enum_type(CodeGen *g, ImportTableEntry *import, TypeTableEnt...@@ -944,7 +944,7 @@ static void resolve_enum_type(CodeGen *g, ImportTableEntry *import, TypeTableEnt
944 continue;944 continue;
945 }945 }
946946
947 uint64_t debug_size_in_bits = LLVMSizeOfTypeInBits(g->target_data_ref, field_type->type_ref);947 uint64_t debug_size_in_bits = 8*LLVMStoreSizeOfType(g->target_data_ref, field_type->type_ref);
948 uint64_t debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, field_type->type_ref);948 uint64_t debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, field_type->type_ref);
949949
950 union_inner_di_types[gen_field_index] = LLVMZigCreateDebugMemberType(g->dbuilder,950 union_inner_di_types[gen_field_index] = LLVMZigCreateDebugMemberType(g->dbuilder,
...@@ -991,7 +991,7 @@ static void resolve_enum_type(CodeGen *g, ImportTableEntry *import, TypeTableEnt...@@ -991,7 +991,7 @@ static void resolve_enum_type(CodeGen *g, ImportTableEntry *import, TypeTableEnt
991 LLVMStructSetBody(enum_type->type_ref, root_struct_element_types, 2, false);991 LLVMStructSetBody(enum_type->type_ref, root_struct_element_types, 2, false);
992992
993 // create debug type for tag993 // create debug type for tag
994 uint64_t tag_debug_size_in_bits = LLVMSizeOfTypeInBits(g->target_data_ref, tag_type_entry->type_ref);994 uint64_t tag_debug_size_in_bits = 8*LLVMStoreSizeOfType(g->target_data_ref, tag_type_entry->type_ref);
995 uint64_t tag_debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, tag_type_entry->type_ref);995 uint64_t tag_debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, tag_type_entry->type_ref);
996 LLVMZigDIType *tag_di_type = LLVMZigCreateDebugEnumerationType(g->dbuilder,996 LLVMZigDIType *tag_di_type = LLVMZigCreateDebugEnumerationType(g->dbuilder,
997 LLVMZigTypeToScope(enum_type->di_type), "AnonEnum", import->di_file, decl_node->line + 1,997 LLVMZigTypeToScope(enum_type->di_type), "AnonEnum", import->di_file, decl_node->line + 1,
...@@ -1030,7 +1030,7 @@ static void resolve_enum_type(CodeGen *g, ImportTableEntry *import, TypeTableEnt...@@ -1030,7 +1030,7 @@ static void resolve_enum_type(CodeGen *g, ImportTableEntry *import, TypeTableEnt
1030 };1030 };
10311031
10321032
1033 uint64_t debug_size_in_bits = LLVMSizeOfTypeInBits(g->target_data_ref, enum_type->type_ref);1033 uint64_t debug_size_in_bits = 8*LLVMStoreSizeOfType(g->target_data_ref, enum_type->type_ref);
1034 uint64_t debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, enum_type->type_ref);1034 uint64_t debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, enum_type->type_ref);
1035 LLVMZigDIType *replacement_di_type = LLVMZigCreateDebugStructType(g->dbuilder,1035 LLVMZigDIType *replacement_di_type = LLVMZigCreateDebugStructType(g->dbuilder,
1036 LLVMZigFileToScope(import->di_file),1036 LLVMZigFileToScope(import->di_file),
...@@ -1047,7 +1047,7 @@ static void resolve_enum_type(CodeGen *g, ImportTableEntry *import, TypeTableEnt...@@ -1047,7 +1047,7 @@ static void resolve_enum_type(CodeGen *g, ImportTableEntry *import, TypeTableEnt
1047 enum_type->type_ref = tag_type_entry->type_ref;1047 enum_type->type_ref = tag_type_entry->type_ref;
10481048
1049 // create debug type for tag1049 // create debug type for tag
1050 uint64_t tag_debug_size_in_bits = LLVMSizeOfTypeInBits(g->target_data_ref, tag_type_entry->type_ref);1050 uint64_t tag_debug_size_in_bits = 8*LLVMStoreSizeOfType(g->target_data_ref, tag_type_entry->type_ref);
1051 uint64_t tag_debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, tag_type_entry->type_ref);1051 uint64_t tag_debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, tag_type_entry->type_ref);
1052 LLVMZigDIType *tag_di_type = LLVMZigCreateDebugEnumerationType(g->dbuilder,1052 LLVMZigDIType *tag_di_type = LLVMZigCreateDebugEnumerationType(g->dbuilder,
1053 LLVMZigFileToScope(import->di_file), buf_ptr(&decl_node->data.struct_decl.name),1053 LLVMZigFileToScope(import->di_file), buf_ptr(&decl_node->data.struct_decl.name),
...@@ -1155,7 +1155,7 @@ static void resolve_struct_type(CodeGen *g, ImportTableEntry *import, TypeTableE...@@ -1155,7 +1155,7 @@ static void resolve_struct_type(CodeGen *g, ImportTableEntry *import, TypeTableE
11551155
1156 TypeTableEntry *field_type = type_struct_field->type_entry;1156 TypeTableEntry *field_type = type_struct_field->type_entry;
11571157
1158 uint64_t debug_size_in_bits = LLVMSizeOfTypeInBits(g->target_data_ref, field_type->type_ref);1158 uint64_t debug_size_in_bits = 8*LLVMStoreSizeOfType(g->target_data_ref, field_type->type_ref);
1159 uint64_t debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, field_type->type_ref);1159 uint64_t debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, field_type->type_ref);
1160 uint64_t debug_offset_in_bits = 8*LLVMOffsetOfElement(g->target_data_ref, struct_type->type_ref,1160 uint64_t debug_offset_in_bits = 8*LLVMOffsetOfElement(g->target_data_ref, struct_type->type_ref,
1161 gen_field_index);1161 gen_field_index);
...@@ -1171,7 +1171,7 @@ static void resolve_struct_type(CodeGen *g, ImportTableEntry *import, TypeTableE...@@ -1171,7 +1171,7 @@ static void resolve_struct_type(CodeGen *g, ImportTableEntry *import, TypeTableE
1171 }1171 }
11721172
11731173
1174 uint64_t debug_size_in_bits = LLVMSizeOfTypeInBits(g->target_data_ref, struct_type->type_ref);1174 uint64_t debug_size_in_bits = 8*LLVMStoreSizeOfType(g->target_data_ref, struct_type->type_ref);
1175 uint64_t debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, struct_type->type_ref);1175 uint64_t debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, struct_type->type_ref);
1176 LLVMZigDIType *replacement_di_type = LLVMZigCreateDebugStructType(g->dbuilder,1176 LLVMZigDIType *replacement_di_type = LLVMZigCreateDebugStructType(g->dbuilder,
1177 LLVMZigFileToScope(import->di_file),1177 LLVMZigFileToScope(import->di_file),
src/codegen.cpp+24-9
...@@ -3104,7 +3104,22 @@ static void define_builtin_types(CodeGen *g) {...@@ -3104,7 +3104,22 @@ static void define_builtin_types(CodeGen *g) {
3104 buf_resize(&entry->name, 0);3104 buf_resize(&entry->name, 0);
3105 buf_appendf(&entry->name, "%c%d", u_or_i, size_in_bits);3105 buf_appendf(&entry->name, "%c%d", u_or_i, size_in_bits);
31063106
3107 uint64_t debug_size_in_bits = LLVMSizeOfTypeInBits(g->target_data_ref, entry->type_ref);3107 unsigned dwarf_tag;
3108 if (is_signed) {
3109 if (size_in_bits == 8) {
3110 dwarf_tag = LLVMZigEncoding_DW_ATE_signed_char();
3111 } else {
3112 dwarf_tag = LLVMZigEncoding_DW_ATE_signed();
3113 }
3114 } else {
3115 if (size_in_bits == 8) {
3116 dwarf_tag = LLVMZigEncoding_DW_ATE_unsigned_char();
3117 } else {
3118 dwarf_tag = LLVMZigEncoding_DW_ATE_unsigned();
3119 }
3120 }
3121
3122 uint64_t debug_size_in_bits = 8*LLVMStoreSizeOfType(g->target_data_ref, entry->type_ref);
3108 uint64_t debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, entry->type_ref);3123 uint64_t debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, entry->type_ref);
3109 entry->di_type = LLVMZigCreateDebugBasicType(g->dbuilder, buf_ptr(&entry->name),3124 entry->di_type = LLVMZigCreateDebugBasicType(g->dbuilder, buf_ptr(&entry->name),
3110 debug_size_in_bits, debug_align_in_bits,3125 debug_size_in_bits, debug_align_in_bits,
...@@ -3133,7 +3148,7 @@ static void define_builtin_types(CodeGen *g) {...@@ -3133,7 +3148,7 @@ static void define_builtin_types(CodeGen *g) {
31333148
3134 buf_init_from_str(&entry->name, info->name);3149 buf_init_from_str(&entry->name, info->name);
31353150
3136 uint64_t debug_size_in_bits = LLVMSizeOfTypeInBits(g->target_data_ref, entry->type_ref);3151 uint64_t debug_size_in_bits = 8*LLVMStoreSizeOfType(g->target_data_ref, entry->type_ref);
3137 uint64_t debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, entry->type_ref);3152 uint64_t debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, entry->type_ref);
3138 entry->di_type = LLVMZigCreateDebugBasicType(g->dbuilder, buf_ptr(&entry->name),3153 entry->di_type = LLVMZigCreateDebugBasicType(g->dbuilder, buf_ptr(&entry->name),
3139 debug_size_in_bits,3154 debug_size_in_bits,
...@@ -3150,12 +3165,12 @@ static void define_builtin_types(CodeGen *g) {...@@ -3150,12 +3165,12 @@ static void define_builtin_types(CodeGen *g) {
3150 TypeTableEntry *entry = new_type_table_entry(TypeTableEntryIdBool);3165 TypeTableEntry *entry = new_type_table_entry(TypeTableEntryIdBool);
3151 entry->type_ref = LLVMInt1Type();3166 entry->type_ref = LLVMInt1Type();
3152 buf_init_from_str(&entry->name, "bool");3167 buf_init_from_str(&entry->name, "bool");
3153 uint64_t debug_size_in_bits = LLVMSizeOfTypeInBits(g->target_data_ref, entry->type_ref);3168 uint64_t debug_size_in_bits = 8*LLVMStoreSizeOfType(g->target_data_ref, entry->type_ref);
3154 uint64_t debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, entry->type_ref);3169 uint64_t debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, entry->type_ref);
3155 entry->di_type = LLVMZigCreateDebugBasicType(g->dbuilder, buf_ptr(&entry->name),3170 entry->di_type = LLVMZigCreateDebugBasicType(g->dbuilder, buf_ptr(&entry->name),
3156 debug_size_in_bits,3171 debug_size_in_bits,
3157 debug_align_in_bits,3172 debug_align_in_bits,
3158 LLVMZigEncoding_DW_ATE_unsigned());3173 LLVMZigEncoding_DW_ATE_boolean());
3159 g->builtin_types.entry_bool = entry;3174 g->builtin_types.entry_bool = entry;
3160 g->primitive_type_table.put(&entry->name, entry);3175 g->primitive_type_table.put(&entry->name, entry);
3161 }3176 }
...@@ -3166,7 +3181,7 @@ static void define_builtin_types(CodeGen *g) {...@@ -3166,7 +3181,7 @@ static void define_builtin_types(CodeGen *g) {
3166 entry->data.integral.is_signed = true;3181 entry->data.integral.is_signed = true;
3167 entry->data.integral.bit_count = g->pointer_size_bytes * 8;3182 entry->data.integral.bit_count = g->pointer_size_bytes * 8;
31683183
3169 uint64_t debug_size_in_bits = LLVMSizeOfTypeInBits(g->target_data_ref, entry->type_ref);3184 uint64_t debug_size_in_bits = 8*LLVMStoreSizeOfType(g->target_data_ref, entry->type_ref);
3170 uint64_t debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, entry->type_ref);3185 uint64_t debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, entry->type_ref);
3171 entry->di_type = LLVMZigCreateDebugBasicType(g->dbuilder, buf_ptr(&entry->name),3186 entry->di_type = LLVMZigCreateDebugBasicType(g->dbuilder, buf_ptr(&entry->name),
3172 debug_size_in_bits,3187 debug_size_in_bits,
...@@ -3182,7 +3197,7 @@ static void define_builtin_types(CodeGen *g) {...@@ -3182,7 +3197,7 @@ static void define_builtin_types(CodeGen *g) {
3182 entry->data.integral.is_signed = false;3197 entry->data.integral.is_signed = false;
3183 entry->data.integral.bit_count = g->pointer_size_bytes * 8;3198 entry->data.integral.bit_count = g->pointer_size_bytes * 8;
31843199
3185 uint64_t debug_size_in_bits = LLVMSizeOfTypeInBits(g->target_data_ref, entry->type_ref);3200 uint64_t debug_size_in_bits = 8*LLVMStoreSizeOfType(g->target_data_ref, entry->type_ref);
3186 uint64_t debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, entry->type_ref);3201 uint64_t debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, entry->type_ref);
3187 entry->di_type = LLVMZigCreateDebugBasicType(g->dbuilder, buf_ptr(&entry->name),3202 entry->di_type = LLVMZigCreateDebugBasicType(g->dbuilder, buf_ptr(&entry->name),
3188 debug_size_in_bits,3203 debug_size_in_bits,
...@@ -3197,7 +3212,7 @@ static void define_builtin_types(CodeGen *g) {...@@ -3197,7 +3212,7 @@ static void define_builtin_types(CodeGen *g) {
3197 buf_init_from_str(&entry->name, "f32");3212 buf_init_from_str(&entry->name, "f32");
3198 entry->data.floating.bit_count = 32;3213 entry->data.floating.bit_count = 32;
31993214
3200 uint64_t debug_size_in_bits = LLVMSizeOfTypeInBits(g->target_data_ref, entry->type_ref);3215 uint64_t debug_size_in_bits = 8*LLVMStoreSizeOfType(g->target_data_ref, entry->type_ref);
3201 uint64_t debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, entry->type_ref);3216 uint64_t debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, entry->type_ref);
3202 entry->di_type = LLVMZigCreateDebugBasicType(g->dbuilder, buf_ptr(&entry->name),3217 entry->di_type = LLVMZigCreateDebugBasicType(g->dbuilder, buf_ptr(&entry->name),
3203 debug_size_in_bits,3218 debug_size_in_bits,
...@@ -3212,7 +3227,7 @@ static void define_builtin_types(CodeGen *g) {...@@ -3212,7 +3227,7 @@ static void define_builtin_types(CodeGen *g) {
3212 buf_init_from_str(&entry->name, "f64");3227 buf_init_from_str(&entry->name, "f64");
3213 entry->data.floating.bit_count = 64;3228 entry->data.floating.bit_count = 64;
32143229
3215 uint64_t debug_size_in_bits = LLVMSizeOfTypeInBits(g->target_data_ref, entry->type_ref);3230 uint64_t debug_size_in_bits = 8*LLVMStoreSizeOfType(g->target_data_ref, entry->type_ref);
3216 uint64_t debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, entry->type_ref);3231 uint64_t debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, entry->type_ref);
3217 entry->di_type = LLVMZigCreateDebugBasicType(g->dbuilder, buf_ptr(&entry->name),3232 entry->di_type = LLVMZigCreateDebugBasicType(g->dbuilder, buf_ptr(&entry->name),
3218 debug_size_in_bits,3233 debug_size_in_bits,
...@@ -3227,7 +3242,7 @@ static void define_builtin_types(CodeGen *g) {...@@ -3227,7 +3242,7 @@ static void define_builtin_types(CodeGen *g) {
3227 buf_init_from_str(&entry->name, "c_long_double");3242 buf_init_from_str(&entry->name, "c_long_double");
3228 entry->data.floating.bit_count = 80;3243 entry->data.floating.bit_count = 80;
32293244
3230 uint64_t debug_size_in_bits = LLVMSizeOfTypeInBits(g->target_data_ref, entry->type_ref);3245 uint64_t debug_size_in_bits = 8*LLVMStoreSizeOfType(g->target_data_ref, entry->type_ref);
3231 uint64_t debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, entry->type_ref);3246 uint64_t debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, entry->type_ref);
3232 entry->di_type = LLVMZigCreateDebugBasicType(g->dbuilder, buf_ptr(&entry->name),3247 entry->di_type = LLVMZigCreateDebugBasicType(g->dbuilder, buf_ptr(&entry->name),
3233 debug_size_in_bits,3248 debug_size_in_bits,
src/parseh.cpp+3-3
...@@ -793,7 +793,7 @@ static void visit_enum_decl(Context *c, const EnumDecl *enum_decl) {...@@ -793,7 +793,7 @@ static void visit_enum_decl(Context *c, const EnumDecl *enum_decl) {
793793
794 // create debug type for tag794 // create debug type for tag
795 unsigned line = c->source_node ? (c->source_node->line + 1) : 0;795 unsigned line = c->source_node ? (c->source_node->line + 1) : 0;
796 uint64_t debug_size_in_bits = LLVMSizeOfTypeInBits(c->codegen->target_data_ref, enum_type->type_ref);796 uint64_t debug_size_in_bits = 8*LLVMStoreSizeOfType(c->codegen->target_data_ref, enum_type->type_ref);
797 uint64_t debug_align_in_bits = 8*LLVMABISizeOfType(c->codegen->target_data_ref, enum_type->type_ref);797 uint64_t debug_align_in_bits = 8*LLVMABISizeOfType(c->codegen->target_data_ref, enum_type->type_ref);
798 LLVMZigDIType *tag_di_type = LLVMZigCreateDebugEnumerationType(c->codegen->dbuilder,798 LLVMZigDIType *tag_di_type = LLVMZigCreateDebugEnumerationType(c->codegen->dbuilder,
799 LLVMZigFileToScope(c->import->di_file), buf_ptr(bare_name),799 LLVMZigFileToScope(c->import->di_file), buf_ptr(bare_name),
...@@ -914,7 +914,7 @@ static TypeTableEntry *resolve_record_decl(Context *c, const RecordDecl *record_...@@ -914,7 +914,7 @@ static TypeTableEntry *resolve_record_decl(Context *c, const RecordDecl *record_
914 return struct_type;914 return struct_type;
915 }915 }
916916
917 uint64_t debug_size_in_bits = LLVMSizeOfTypeInBits(c->codegen->target_data_ref, field_type->type_ref);917 uint64_t debug_size_in_bits = 8*LLVMStoreSizeOfType(c->codegen->target_data_ref, field_type->type_ref);
918 uint64_t debug_align_in_bits = 8*LLVMABISizeOfType(c->codegen->target_data_ref, field_type->type_ref);918 uint64_t debug_align_in_bits = 8*LLVMABISizeOfType(c->codegen->target_data_ref, field_type->type_ref);
919 uint64_t debug_offset_in_bits = 8*LLVMOffsetOfElement(c->codegen->target_data_ref, struct_type->type_ref, i);919 uint64_t debug_offset_in_bits = 8*LLVMOffsetOfElement(c->codegen->target_data_ref, struct_type->type_ref, i);
920 di_element_types[i] = LLVMZigCreateDebugMemberType(c->codegen->dbuilder,920 di_element_types[i] = LLVMZigCreateDebugMemberType(c->codegen->dbuilder,
...@@ -937,7 +937,7 @@ static TypeTableEntry *resolve_record_decl(Context *c, const RecordDecl *record_...@@ -937,7 +937,7 @@ static TypeTableEntry *resolve_record_decl(Context *c, const RecordDecl *record_
937937
938 LLVMStructSetBody(struct_type->type_ref, element_types, field_count, false);938 LLVMStructSetBody(struct_type->type_ref, element_types, field_count, false);
939939
940 uint64_t debug_size_in_bits = LLVMSizeOfTypeInBits(c->codegen->target_data_ref, struct_type->type_ref);940 uint64_t debug_size_in_bits = 8*LLVMStoreSizeOfType(c->codegen->target_data_ref, struct_type->type_ref);
941 uint64_t debug_align_in_bits = 8*LLVMABISizeOfType(c->codegen->target_data_ref, struct_type->type_ref);941 uint64_t debug_align_in_bits = 8*LLVMABISizeOfType(c->codegen->target_data_ref, struct_type->type_ref);
942 LLVMZigDIType *replacement_di_type = LLVMZigCreateDebugStructType(c->codegen->dbuilder,942 LLVMZigDIType *replacement_di_type = LLVMZigCreateDebugStructType(c->codegen->dbuilder,
943 LLVMZigFileToScope(c->import->di_file),943 LLVMZigFileToScope(c->import->di_file),
src/zig_llvm.cpp+12
...@@ -324,6 +324,18 @@ unsigned LLVMZigEncoding_DW_ATE_float(void) {...@@ -324,6 +324,18 @@ unsigned LLVMZigEncoding_DW_ATE_float(void) {
324 return dwarf::DW_ATE_float;324 return dwarf::DW_ATE_float;
325}325}
326326
327unsigned LLVMZigEncoding_DW_ATE_boolean(void) {
328 return dwarf::DW_ATE_boolean;
329}
330
331unsigned LLVMZigEncoding_DW_ATE_unsigned_char(void) {
332 return dwarf::DW_ATE_unsigned_char;
333}
334
335unsigned LLVMZigEncoding_DW_ATE_signed_char(void) {
336 return dwarf::DW_ATE_signed_char;
337}
338
327unsigned LLVMZigLang_DW_LANG_C99(void) {339unsigned LLVMZigLang_DW_LANG_C99(void) {
328 return dwarf::DW_LANG_C99;340 return dwarf::DW_LANG_C99;
329}341}
src/zig_llvm.hpp+3
...@@ -90,6 +90,9 @@ LLVMZigDIType *LLVMZigCreateSubroutineType(LLVMZigDIBuilder *dibuilder_wrapped,...@@ -90,6 +90,9 @@ LLVMZigDIType *LLVMZigCreateSubroutineType(LLVMZigDIBuilder *dibuilder_wrapped,
90unsigned LLVMZigEncoding_DW_ATE_unsigned(void);90unsigned LLVMZigEncoding_DW_ATE_unsigned(void);
91unsigned LLVMZigEncoding_DW_ATE_signed(void);91unsigned LLVMZigEncoding_DW_ATE_signed(void);
92unsigned LLVMZigEncoding_DW_ATE_float(void);92unsigned LLVMZigEncoding_DW_ATE_float(void);
93unsigned LLVMZigEncoding_DW_ATE_boolean(void);
94unsigned LLVMZigEncoding_DW_ATE_unsigned_char(void);
95unsigned LLVMZigEncoding_DW_ATE_signed_char(void);
93unsigned LLVMZigLang_DW_LANG_C99(void);96unsigned LLVMZigLang_DW_LANG_C99(void);
94unsigned LLVMZigTag_DW_auto_variable(void);97unsigned LLVMZigTag_DW_auto_variable(void);
95unsigned LLVMZigTag_DW_arg_variable(void);98unsigned LLVMZigTag_DW_arg_variable(void);