| author | |
| committer | |
| log | b87d0abefeeeed4d9ce981971a5e33a6d0932529 |
| tree | f8f817222a2f2c49ad67fc6cfe1ca98b3278868f |
| parent | 25e74cb385dc353bcf0e56b35a6f1c7c8b13267e |
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); |
| 213 | 213 | ||
| 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); |
| 264 | 264 | ||
| 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); |
| 268 | 268 | ||
| 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); |
| 273 | 273 | ||
| 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); |
| 276 | 276 | ||
| 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); |
| 338 | 338 | ||
| 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); |
| 342 | 342 | ||
| 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); |
| 346 | 346 | ||
| 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); |
| 349 | 349 | ||
| 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)); |
| 395 | 395 | ||
| 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); |
| 398 | 398 | ||
| 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 | } |
| 946 | 946 | ||
| 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); |
| 949 | 949 | ||
| 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); |
| 992 | 992 | ||
| 993 | // create debug type for tag | 993 | // 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 | }; |
| 1031 | 1031 | ||
| 1032 | 1032 | ||
| 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; |
| 1048 | 1048 | ||
| 1049 | // create debug type for tag | 1049 | // 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 |
| 1155 | 1155 | ||
| 1156 | TypeTableEntry *field_type = type_struct_field->type_entry; | 1156 | TypeTableEntry *field_type = type_struct_field->type_entry; |
| 1157 | 1157 | ||
| 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 | } |
| 1172 | 1172 | ||
| 1173 | 1173 | ||
| 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); |
| 3106 | 3106 | ||
| 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) { |
| 3133 | 3148 | ||
| 3134 | buf_init_from_str(&entry->name, info->name); | 3149 | buf_init_from_str(&entry->name, info->name); |
| 3135 | 3150 | ||
| 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; |
| 3168 | 3183 | ||
| 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; |
| 3184 | 3199 | ||
| 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; |
| 3199 | 3214 | ||
| 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; |
| 3214 | 3229 | ||
| 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; |
| 3229 | 3244 | ||
| 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) { |
| 793 | 793 | ||
| 794 | // create debug type for tag | 794 | // 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 | } |
| 916 | 916 | ||
| 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_ |
| 937 | 937 | ||
| 938 | LLVMStructSetBody(struct_type->type_ref, element_types, field_count, false); | 938 | LLVMStructSetBody(struct_type->type_ref, element_types, field_count, false); |
| 939 | 939 | ||
| 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 | } |
| 326 | 326 | ||
| 327 | unsigned LLVMZigEncoding_DW_ATE_boolean(void) { | ||
| 328 | return dwarf::DW_ATE_boolean; | ||
| 329 | } | ||
| 330 | |||
| 331 | unsigned LLVMZigEncoding_DW_ATE_unsigned_char(void) { | ||
| 332 | return dwarf::DW_ATE_unsigned_char; | ||
| 333 | } | ||
| 334 | |||
| 335 | unsigned LLVMZigEncoding_DW_ATE_signed_char(void) { | ||
| 336 | return dwarf::DW_ATE_signed_char; | ||
| 337 | } | ||
| 338 | |||
| 327 | unsigned LLVMZigLang_DW_LANG_C99(void) { | 339 | unsigned 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, |
| 90 | unsigned LLVMZigEncoding_DW_ATE_unsigned(void); | 90 | unsigned LLVMZigEncoding_DW_ATE_unsigned(void); |
| 91 | unsigned LLVMZigEncoding_DW_ATE_signed(void); | 91 | unsigned LLVMZigEncoding_DW_ATE_signed(void); |
| 92 | unsigned LLVMZigEncoding_DW_ATE_float(void); | 92 | unsigned LLVMZigEncoding_DW_ATE_float(void); |
| 93 | unsigned LLVMZigEncoding_DW_ATE_boolean(void); | ||
| 94 | unsigned LLVMZigEncoding_DW_ATE_unsigned_char(void); | ||
| 95 | unsigned LLVMZigEncoding_DW_ATE_signed_char(void); | ||
| 93 | unsigned LLVMZigLang_DW_LANG_C99(void); | 96 | unsigned LLVMZigLang_DW_LANG_C99(void); |
| 94 | unsigned LLVMZigTag_DW_auto_variable(void); | 97 | unsigned LLVMZigTag_DW_auto_variable(void); |
| 95 | unsigned LLVMZigTag_DW_arg_variable(void); | 98 | unsigned LLVMZigTag_DW_arg_variable(void); |