zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 576581bd7b78825ce27d6a73fc42dd90eab8fbd1 (tree)
parent fc402bdbbbb5be2a538f0469f3f213264e7fcc59
Author: Andrew Kelley <andrew@ziglang.org>
Date:   Thu, 13 Aug 2020 15:54:46 -0700

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

Diffstat:
Msrc/analyze.cpp | 2+-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git 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),