From 576581bd7b78825ce27d6a73fc42dd90eab8fbd1 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Thu, 13 Aug 2020 15:54:46 -0700 Subject: [PATCH] stage1: fix enums having wrong debug info It wasn't wrong info, but e.g. GDB couldn't handle non-power-of-two enum tags. Now we tell debug info that enum tags are always power of two size. closes #4526 closes #5432 --- src/analyze.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/analyze.cpp b/src/analyze.cpp index e3e57ee34d..6a4a2ec052 100644 --- a/src/analyze.cpp +++ b/src/analyze.cpp @@ -8623,7 +8623,7 @@ static void resolve_llvm_types_enum(CodeGen *g, ZigType *enum_type, ResolveStatu enum_type->llvm_type = get_llvm_type(g, tag_int_type); // create debug type for tag - uint64_t tag_debug_size_in_bits = tag_int_type->size_in_bits; + uint64_t tag_debug_size_in_bits = 8*tag_int_type->abi_size; uint64_t tag_debug_align_in_bits = 8*tag_int_type->abi_align; ZigLLVMDIType *tag_di_type = ZigLLVMCreateDebugEnumerationType(g->dbuilder, ZigLLVMFileToScope(import->data.structure.root_struct->di_file), buf_ptr(&enum_type->name),