mirror of
https://github.com/ziglang/zig.git
synced 2026-01-09 17:05:16 +00:00
improve debug info for optionals
This commit is contained in:
parent
dbe4d72bcf
commit
c8669a4cf8
@ -8719,7 +8719,6 @@ static void resolve_llvm_types_optional(CodeGen *g, ZigType *type, ResolveStatus
|
||||
if (ResolveStatusLLVMFwdDecl >= wanted_resolve_status) return;
|
||||
}
|
||||
|
||||
LLVMTypeRef child_llvm_type = get_llvm_type(g, child_type);
|
||||
ZigLLVMDIType *child_llvm_di_type = get_llvm_di_type(g, child_type);
|
||||
if (type->data.maybe.resolve_status >= wanted_resolve_status) return;
|
||||
|
||||
@ -8729,35 +8728,28 @@ static void resolve_llvm_types_optional(CodeGen *g, ZigType *type, ResolveStatus
|
||||
};
|
||||
LLVMStructSetBody(type->llvm_type, elem_types, 2, false);
|
||||
|
||||
uint64_t val_debug_size_in_bits = 8*LLVMStoreSizeOfType(g->target_data_ref, child_llvm_type);
|
||||
uint64_t val_debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, child_llvm_type);
|
||||
uint64_t val_offset_in_bits = 8*LLVMOffsetOfElement(g->target_data_ref, type->llvm_type, 0);
|
||||
uint64_t val_offset_in_bits = 8*LLVMOffsetOfElement(g->target_data_ref, type->llvm_type, maybe_child_index);
|
||||
uint64_t maybe_offset_in_bits = 8*LLVMOffsetOfElement(g->target_data_ref, type->llvm_type, maybe_null_index);
|
||||
|
||||
uint64_t maybe_debug_size_in_bits = 8*LLVMStoreSizeOfType(g->target_data_ref, bool_llvm_type);
|
||||
uint64_t maybe_debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, bool_llvm_type);
|
||||
uint64_t maybe_offset_in_bits = 8*LLVMOffsetOfElement(g->target_data_ref, type->llvm_type, 1);
|
||||
|
||||
uint64_t debug_size_in_bits = 8*LLVMStoreSizeOfType(g->target_data_ref, type->llvm_type);
|
||||
uint64_t debug_align_in_bits = 8*LLVMABISizeOfType(g->target_data_ref, type->llvm_type);
|
||||
|
||||
ZigLLVMDIType *di_element_types[] = {
|
||||
ZigLLVMDIType *di_element_types[2];
|
||||
di_element_types[maybe_child_index] =
|
||||
ZigLLVMCreateDebugMemberType(g->dbuilder, ZigLLVMTypeToScope(type->llvm_di_type),
|
||||
"val", di_file, line,
|
||||
val_debug_size_in_bits,
|
||||
val_debug_align_in_bits,
|
||||
8 * child_type->abi_size,
|
||||
8 * child_type->abi_align,
|
||||
val_offset_in_bits,
|
||||
ZigLLVM_DIFlags_Zero, child_llvm_di_type),
|
||||
ZigLLVM_DIFlags_Zero, child_llvm_di_type);
|
||||
di_element_types[maybe_null_index] =
|
||||
ZigLLVMCreateDebugMemberType(g->dbuilder, ZigLLVMTypeToScope(type->llvm_di_type),
|
||||
"maybe", di_file, line,
|
||||
maybe_debug_size_in_bits,
|
||||
maybe_debug_align_in_bits,
|
||||
8*g->builtin_types.entry_bool->abi_size,
|
||||
8*g->builtin_types.entry_bool->abi_align,
|
||||
maybe_offset_in_bits,
|
||||
ZigLLVM_DIFlags_Zero, bool_llvm_di_type),
|
||||
};
|
||||
ZigLLVM_DIFlags_Zero, bool_llvm_di_type);
|
||||
ZigLLVMDIType *replacement_di_type = ZigLLVMCreateDebugStructType(g->dbuilder,
|
||||
compile_unit_scope,
|
||||
buf_ptr(&type->name),
|
||||
di_file, line, debug_size_in_bits, debug_align_in_bits, ZigLLVM_DIFlags_Zero,
|
||||
di_file, line, 8 * type->abi_size, 8 * type->abi_align, ZigLLVM_DIFlags_Zero,
|
||||
nullptr, di_element_types, 2, 0, nullptr, "");
|
||||
|
||||
ZigLLVMReplaceTemporary(g->dbuilder, type->llvm_di_type, replacement_di_type);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user