Propagate DIFlags to LLVM
parent
ebe921e48f
commit
80cd142c96
|
@ -6388,12 +6388,14 @@ static void resolve_llvm_types_slice(CodeGen *g, ZigType *type, ResolveStatus wa
|
|||
len_debug_size_in_bits,
|
||||
len_debug_align_in_bits,
|
||||
len_offset_in_bits,
|
||||
0, usize_llvm_di_type),
|
||||
ZigLLVM_DIFlags_Zero,
|
||||
usize_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, 0,
|
||||
di_file, line, debug_size_in_bits, debug_align_in_bits,
|
||||
ZigLLVM_DIFlags_Zero,
|
||||
nullptr, di_element_types, 1, 0, nullptr, "");
|
||||
|
||||
ZigLLVMReplaceTemporary(g->dbuilder, type->llvm_di_type, replacement_di_type);
|
||||
|
@ -6425,18 +6427,19 @@ static void resolve_llvm_types_slice(CodeGen *g, ZigType *type, ResolveStatus wa
|
|||
ptr_debug_size_in_bits,
|
||||
ptr_debug_align_in_bits,
|
||||
ptr_offset_in_bits,
|
||||
0, get_llvm_di_type(g, ptr_type)),
|
||||
ZigLLVM_DIFlags_Zero, get_llvm_di_type(g, ptr_type)),
|
||||
ZigLLVMCreateDebugMemberType(g->dbuilder, ZigLLVMTypeToScope(type->llvm_di_type),
|
||||
"len", di_file, line,
|
||||
len_debug_size_in_bits,
|
||||
len_debug_align_in_bits,
|
||||
len_offset_in_bits,
|
||||
0, usize_llvm_di_type),
|
||||
ZigLLVM_DIFlags_Zero, usize_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, 0,
|
||||
di_file, line, debug_size_in_bits, debug_align_in_bits,
|
||||
ZigLLVM_DIFlags_Zero,
|
||||
nullptr, di_element_types, 2, 0, nullptr, "");
|
||||
|
||||
ZigLLVMReplaceTemporary(g->dbuilder, type->llvm_di_type, replacement_di_type);
|
||||
|
@ -6597,7 +6600,7 @@ static void resolve_llvm_types_struct(CodeGen *g, ZigType *struct_type, ResolveS
|
|||
debug_size_in_bits,
|
||||
debug_align_in_bits,
|
||||
debug_offset_in_bits,
|
||||
0, field_di_type);
|
||||
ZigLLVM_DIFlags_Zero, field_di_type);
|
||||
assert(di_element_types[debug_field_index]);
|
||||
debug_field_index += 1;
|
||||
}
|
||||
|
@ -6610,7 +6613,8 @@ static void resolve_llvm_types_struct(CodeGen *g, ZigType *struct_type, ResolveS
|
|||
di_file, line,
|
||||
debug_size_in_bits,
|
||||
debug_align_in_bits,
|
||||
0, nullptr, di_element_types, (int)debug_field_count, 0, nullptr, "");
|
||||
ZigLLVM_DIFlags_Zero,
|
||||
nullptr, di_element_types, (int)debug_field_count, 0, nullptr, "");
|
||||
|
||||
ZigLLVMReplaceTemporary(g->dbuilder, struct_type->llvm_di_type, replacement_di_type);
|
||||
struct_type->llvm_di_type = replacement_di_type;
|
||||
|
@ -6639,7 +6643,8 @@ static void resolve_llvm_types_enum(CodeGen *g, ZigType *enum_type) {
|
|||
import->data.structure.root_struct->di_file, (unsigned)(decl_node->line + 1),
|
||||
debug_size_in_bits,
|
||||
debug_align_in_bits,
|
||||
0, nullptr, di_element_types, (int)debug_field_count, 0, nullptr, "");
|
||||
ZigLLVM_DIFlags_Zero,
|
||||
nullptr, di_element_types, (int)debug_field_count, 0, nullptr, "");
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -6723,7 +6728,7 @@ static void resolve_llvm_types_union(CodeGen *g, ZigType *union_type, ResolveSta
|
|||
store_size_in_bits,
|
||||
abi_align_in_bits,
|
||||
0,
|
||||
0, field_di_type);
|
||||
ZigLLVM_DIFlags_Zero, field_di_type);
|
||||
|
||||
}
|
||||
|
||||
|
@ -6752,7 +6757,7 @@ static void resolve_llvm_types_union(CodeGen *g, ZigType *union_type, ResolveSta
|
|||
import->data.structure.root_struct->di_file, (unsigned)(decl_node->line + 1),
|
||||
union_type->data.unionation.union_abi_size * 8,
|
||||
most_aligned_union_member->abi_align * 8,
|
||||
0, union_inner_di_types,
|
||||
ZigLLVM_DIFlags_Zero, union_inner_di_types,
|
||||
gen_field_count, 0, "");
|
||||
|
||||
ZigLLVMReplaceTemporary(g->dbuilder, union_type->llvm_di_type, replacement_di_type);
|
||||
|
@ -6786,7 +6791,7 @@ static void resolve_llvm_types_union(CodeGen *g, ZigType *union_type, ResolveSta
|
|||
ZigLLVMTypeToScope(union_type->llvm_di_type), "AnonUnion",
|
||||
import->data.structure.root_struct->di_file, (unsigned)(decl_node->line + 1),
|
||||
most_aligned_union_member->size_in_bits, 8*most_aligned_union_member->abi_align,
|
||||
0, union_inner_di_types, gen_field_count, 0, "");
|
||||
ZigLLVM_DIFlags_Zero, union_inner_di_types, gen_field_count, 0, "");
|
||||
|
||||
uint64_t union_offset_in_bits = 8*LLVMOffsetOfElement(g->target_data_ref, union_type->llvm_type,
|
||||
union_type->data.unionation.gen_union_index);
|
||||
|
@ -6799,7 +6804,7 @@ static void resolve_llvm_types_union(CodeGen *g, ZigType *union_type, ResolveSta
|
|||
most_aligned_union_member->size_in_bits,
|
||||
8*most_aligned_union_member->abi_align,
|
||||
union_offset_in_bits,
|
||||
0, union_di_type);
|
||||
ZigLLVM_DIFlags_Zero, union_di_type);
|
||||
|
||||
uint64_t tag_debug_size_in_bits = tag_type->size_in_bits;
|
||||
uint64_t tag_debug_align_in_bits = 8*tag_type->abi_align;
|
||||
|
@ -6810,7 +6815,7 @@ static void resolve_llvm_types_union(CodeGen *g, ZigType *union_type, ResolveSta
|
|||
tag_debug_size_in_bits,
|
||||
tag_debug_align_in_bits,
|
||||
tag_offset_in_bits,
|
||||
0, get_llvm_di_type(g, tag_type));
|
||||
ZigLLVM_DIFlags_Zero, get_llvm_di_type(g, tag_type));
|
||||
|
||||
ZigLLVMDIType *di_root_members[2];
|
||||
di_root_members[union_type->data.unionation.gen_tag_index] = tag_member_di_type;
|
||||
|
@ -6824,7 +6829,7 @@ static void resolve_llvm_types_union(CodeGen *g, ZigType *union_type, ResolveSta
|
|||
import->data.structure.root_struct->di_file, (unsigned)(decl_node->line + 1),
|
||||
debug_size_in_bits,
|
||||
debug_align_in_bits,
|
||||
0, nullptr, di_root_members, 2, 0, nullptr, "");
|
||||
ZigLLVM_DIFlags_Zero, nullptr, di_root_members, 2, 0, nullptr, "");
|
||||
|
||||
ZigLLVMReplaceTemporary(g->dbuilder, union_type->llvm_di_type, replacement_di_type);
|
||||
union_type->llvm_di_type = replacement_di_type;
|
||||
|
@ -6952,18 +6957,18 @@ static void resolve_llvm_types_optional(CodeGen *g, ZigType *type) {
|
|||
val_debug_size_in_bits,
|
||||
val_debug_align_in_bits,
|
||||
val_offset_in_bits,
|
||||
0, child_llvm_di_type),
|
||||
ZigLLVM_DIFlags_Zero, child_llvm_di_type),
|
||||
ZigLLVMCreateDebugMemberType(g->dbuilder, ZigLLVMTypeToScope(type->llvm_di_type),
|
||||
"maybe", di_file, line,
|
||||
maybe_debug_size_in_bits,
|
||||
maybe_debug_align_in_bits,
|
||||
maybe_offset_in_bits,
|
||||
0, 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, 0,
|
||||
di_file, line, debug_size_in_bits, debug_align_in_bits, ZigLLVM_DIFlags_Zero,
|
||||
nullptr, di_element_types, 2, 0, nullptr, "");
|
||||
|
||||
ZigLLVMReplaceTemporary(g->dbuilder, type->llvm_di_type, replacement_di_type);
|
||||
|
@ -7016,13 +7021,13 @@ static void resolve_llvm_types_error_union(CodeGen *g, ZigType *type) {
|
|||
tag_debug_size_in_bits,
|
||||
tag_debug_align_in_bits,
|
||||
tag_offset_in_bits,
|
||||
0, get_llvm_di_type(g, err_set_type)),
|
||||
ZigLLVM_DIFlags_Zero, get_llvm_di_type(g, err_set_type)),
|
||||
ZigLLVMCreateDebugMemberType(g->dbuilder, ZigLLVMTypeToScope(type->llvm_di_type),
|
||||
"value", di_file, line,
|
||||
value_debug_size_in_bits,
|
||||
value_debug_align_in_bits,
|
||||
value_offset_in_bits,
|
||||
0, get_llvm_di_type(g, payload_type)),
|
||||
ZigLLVM_DIFlags_Zero, get_llvm_di_type(g, payload_type)),
|
||||
};
|
||||
|
||||
ZigLLVMDIType *replacement_di_type = ZigLLVMCreateDebugStructType(g->dbuilder,
|
||||
|
@ -7031,7 +7036,7 @@ static void resolve_llvm_types_error_union(CodeGen *g, ZigType *type) {
|
|||
di_file, line,
|
||||
debug_size_in_bits,
|
||||
debug_align_in_bits,
|
||||
0,
|
||||
ZigLLVM_DIFlags_Zero,
|
||||
nullptr, di_element_types, 2, 0, nullptr, "");
|
||||
|
||||
ZigLLVMReplaceTemporary(g->dbuilder, type->llvm_di_type, replacement_di_type);
|
||||
|
|
|
@ -674,7 +674,7 @@ static ZigLLVMDIScope *get_di_scope(CodeGen *g, Scope *scope) {
|
|||
bool is_optimized = g->build_mode != BuildModeDebug;
|
||||
bool is_internal_linkage = (fn_table_entry->body_node != nullptr &&
|
||||
fn_table_entry->export_list.length == 0);
|
||||
unsigned flags = 0;
|
||||
unsigned flags = ZigLLVM_DIFlags_StaticMember;
|
||||
ZigLLVMDIScope *fn_di_scope = get_di_scope(g, scope->parent);
|
||||
assert(fn_di_scope != nullptr);
|
||||
ZigLLVMDISubprogram *subprogram = ZigLLVMCreateFunction(g->dbuilder,
|
||||
|
|
|
@ -318,12 +318,12 @@ ZigLLVMDIType *ZigLLVMCreateDebugMemberType(ZigLLVMDIBuilder *dibuilder, ZigLLVM
|
|||
const char *name, ZigLLVMDIFile *file, unsigned line, uint64_t size_in_bits,
|
||||
uint64_t align_in_bits, uint64_t offset_in_bits, unsigned flags, ZigLLVMDIType *type)
|
||||
{
|
||||
assert(flags == 0);
|
||||
DIType *di_type = reinterpret_cast<DIBuilder*>(dibuilder)->createMemberType(
|
||||
reinterpret_cast<DIScope*>(scope),
|
||||
name,
|
||||
reinterpret_cast<DIFile*>(file),
|
||||
line, size_in_bits, align_in_bits, offset_in_bits, DINode::FlagZero,
|
||||
line, size_in_bits, align_in_bits, offset_in_bits,
|
||||
static_cast<DINode::DIFlags>(flags),
|
||||
reinterpret_cast<DIType*>(type));
|
||||
return reinterpret_cast<ZigLLVMDIType*>(di_type);
|
||||
}
|
||||
|
@ -338,12 +338,12 @@ ZigLLVMDIType *ZigLLVMCreateDebugUnionType(ZigLLVMDIBuilder *dibuilder, ZigLLVMD
|
|||
DIType *ditype = reinterpret_cast<DIType*>(types_array[i]);
|
||||
fields.push_back(ditype);
|
||||
}
|
||||
assert(flags == 0);
|
||||
DIType *di_type = reinterpret_cast<DIBuilder*>(dibuilder)->createUnionType(
|
||||
reinterpret_cast<DIScope*>(scope),
|
||||
name,
|
||||
reinterpret_cast<DIFile*>(file),
|
||||
line_number, size_in_bits, align_in_bits, DINode::FlagZero,
|
||||
line_number, size_in_bits, align_in_bits,
|
||||
static_cast<DINode::DIFlags>(flags),
|
||||
reinterpret_cast<DIBuilder*>(dibuilder)->getOrCreateArray(fields),
|
||||
run_time_lang, unique_id);
|
||||
return reinterpret_cast<ZigLLVMDIType*>(di_type);
|
||||
|
@ -360,12 +360,12 @@ ZigLLVMDIType *ZigLLVMCreateDebugStructType(ZigLLVMDIBuilder *dibuilder, ZigLLVM
|
|||
DIType *ditype = reinterpret_cast<DIType*>(types_array[i]);
|
||||
fields.push_back(ditype);
|
||||
}
|
||||
assert(flags == 0);
|
||||
DIType *di_type = reinterpret_cast<DIBuilder*>(dibuilder)->createStructType(
|
||||
reinterpret_cast<DIScope*>(scope),
|
||||
name,
|
||||
reinterpret_cast<DIFile*>(file),
|
||||
line_number, size_in_bits, align_in_bits, DINode::FlagZero,
|
||||
line_number, size_in_bits, align_in_bits,
|
||||
static_cast<DINode::DIFlags>(flags),
|
||||
reinterpret_cast<DIType*>(derived_from),
|
||||
reinterpret_cast<DIBuilder*>(dibuilder)->getOrCreateArray(fields),
|
||||
run_time_lang,
|
||||
|
@ -426,11 +426,10 @@ ZigLLVMDIType *ZigLLVMCreateSubroutineType(ZigLLVMDIBuilder *dibuilder_wrapped,
|
|||
DIType *ditype = reinterpret_cast<DIType*>(types_array[i]);
|
||||
types.push_back(ditype);
|
||||
}
|
||||
assert(flags == 0);
|
||||
DIBuilder *dibuilder = reinterpret_cast<DIBuilder*>(dibuilder_wrapped);
|
||||
DISubroutineType *subroutine_type = dibuilder->createSubroutineType(
|
||||
dibuilder->getOrCreateTypeArray(types),
|
||||
DINode::FlagZero);
|
||||
static_cast<DINode::DIFlags>(flags));
|
||||
DIType *ditype = subroutine_type;
|
||||
return reinterpret_cast<ZigLLVMDIType*>(ditype);
|
||||
}
|
||||
|
@ -516,7 +515,6 @@ ZigLLVMDILocalVariable *ZigLLVMCreateAutoVariable(ZigLLVMDIBuilder *dbuilder,
|
|||
ZigLLVMDIScope *scope, const char *name, ZigLLVMDIFile *file, unsigned line_no,
|
||||
ZigLLVMDIType *type, bool always_preserve, unsigned flags)
|
||||
{
|
||||
assert(flags == 0);
|
||||
DILocalVariable *result = reinterpret_cast<DIBuilder*>(dbuilder)->createAutoVariable(
|
||||
reinterpret_cast<DIScope*>(scope),
|
||||
name,
|
||||
|
@ -524,7 +522,7 @@ ZigLLVMDILocalVariable *ZigLLVMCreateAutoVariable(ZigLLVMDIBuilder *dbuilder,
|
|||
line_no,
|
||||
reinterpret_cast<DIType*>(type),
|
||||
always_preserve,
|
||||
DINode::FlagZero);
|
||||
static_cast<DINode::DIFlags>(flags));
|
||||
return reinterpret_cast<ZigLLVMDILocalVariable*>(result);
|
||||
}
|
||||
|
||||
|
@ -547,7 +545,6 @@ ZigLLVMDILocalVariable *ZigLLVMCreateParameterVariable(ZigLLVMDIBuilder *dbuilde
|
|||
ZigLLVMDIScope *scope, const char *name, ZigLLVMDIFile *file, unsigned line_no,
|
||||
ZigLLVMDIType *type, bool always_preserve, unsigned flags, unsigned arg_no)
|
||||
{
|
||||
assert(flags == 0);
|
||||
assert(arg_no != 0);
|
||||
DILocalVariable *result = reinterpret_cast<DIBuilder*>(dbuilder)->createParameterVariable(
|
||||
reinterpret_cast<DIScope*>(scope),
|
||||
|
@ -557,7 +554,7 @@ ZigLLVMDILocalVariable *ZigLLVMCreateParameterVariable(ZigLLVMDIBuilder *dbuilde
|
|||
line_no,
|
||||
reinterpret_cast<DIType*>(type),
|
||||
always_preserve,
|
||||
DINode::FlagZero);
|
||||
static_cast<DINode::DIFlags>(flags));
|
||||
return reinterpret_cast<ZigLLVMDILocalVariable*>(result);
|
||||
}
|
||||
|
||||
|
@ -612,7 +609,6 @@ ZigLLVMDISubprogram *ZigLLVMCreateFunction(ZigLLVMDIBuilder *dibuilder, ZigLLVMD
|
|||
unsigned flags, bool is_optimized, ZigLLVMDISubprogram *decl_subprogram)
|
||||
{
|
||||
DISubroutineType *di_sub_type = static_cast<DISubroutineType*>(reinterpret_cast<DIType*>(fn_di_type));
|
||||
assert(flags == 0);
|
||||
DISubprogram *result = reinterpret_cast<DIBuilder*>(dibuilder)->createFunction(
|
||||
reinterpret_cast<DIScope*>(scope),
|
||||
name, linkage_name,
|
||||
|
@ -620,7 +616,7 @@ ZigLLVMDISubprogram *ZigLLVMCreateFunction(ZigLLVMDIBuilder *dibuilder, ZigLLVMD
|
|||
lineno,
|
||||
di_sub_type,
|
||||
scope_line,
|
||||
DINode::FlagStaticMember,
|
||||
static_cast<DINode::DIFlags>(flags),
|
||||
DISubprogram::toSPFlags(is_local_to_unit, is_definition, is_optimized),
|
||||
nullptr,
|
||||
reinterpret_cast<DISubprogram *>(decl_subprogram),
|
||||
|
|
|
@ -406,6 +406,39 @@ enum ZigLLVM_ObjectFormatType {
|
|||
ZigLLVM_Wasm,
|
||||
};
|
||||
|
||||
#define ZigLLVM_DIFlags_Zero 0U
|
||||
#define ZigLLVM_DIFlags_Private 1U
|
||||
#define ZigLLVM_DIFlags_Protected 2U
|
||||
#define ZigLLVM_DIFlags_Public 3U
|
||||
#define ZigLLVM_DIFlags_FwdDecl (1U << 2)
|
||||
#define ZigLLVM_DIFlags_AppleBlock (1U << 3)
|
||||
#define ZigLLVM_DIFlags_BlockByrefStruct (1U << 4)
|
||||
#define ZigLLVM_DIFlags_Virtual (1U << 5)
|
||||
#define ZigLLVM_DIFlags_Artificial (1U << 6)
|
||||
#define ZigLLVM_DIFlags_Explicit (1U << 7)
|
||||
#define ZigLLVM_DIFlags_Prototyped (1U << 8)
|
||||
#define ZigLLVM_DIFlags_ObjcClassComplete (1U << 9)
|
||||
#define ZigLLVM_DIFlags_ObjectPointer (1U << 10)
|
||||
#define ZigLLVM_DIFlags_Vector (1U << 11)
|
||||
#define ZigLLVM_DIFlags_StaticMember (1U << 12)
|
||||
#define ZigLLVM_DIFlags_LValueReference (1U << 13)
|
||||
#define ZigLLVM_DIFlags_RValueReference (1U << 14)
|
||||
#define ZigLLVM_DIFlags_Reserved (1U << 15)
|
||||
#define ZigLLVM_DIFlags_SingleInheritance (1U << 16)
|
||||
#define ZigLLVM_DIFlags_MultipleInheritance (2 << 16)
|
||||
#define ZigLLVM_DIFlags_VirtualInheritance (3 << 16)
|
||||
#define ZigLLVM_DIFlags_IntroducedVirtual (1U << 18)
|
||||
#define ZigLLVM_DIFlags_BitField (1U << 19)
|
||||
#define ZigLLVM_DIFlags_NoReturn (1U << 20)
|
||||
#define ZigLLVM_DIFlags_TypePassByValue (1U << 22)
|
||||
#define ZigLLVM_DIFlags_TypePassByReference (1U << 23)
|
||||
#define ZigLLVM_DIFlags_EnumClass (1U << 24)
|
||||
#define ZigLLVM_DIFlags_Thunk (1U << 25)
|
||||
#define ZigLLVM_DIFlags_NonTrivial (1U << 26)
|
||||
#define ZigLLVM_DIFlags_BigEndian (1U << 27)
|
||||
#define ZigLLVM_DIFlags_LittleEndian (1U << 28)
|
||||
#define ZigLLVM_DIFlags_AllCallsDescribed (1U << 29)
|
||||
|
||||
ZIG_EXTERN_C const char *ZigLLVMGetArchTypeName(enum ZigLLVM_ArchType arch);
|
||||
ZIG_EXTERN_C const char *ZigLLVMGetSubArchTypeName(enum ZigLLVM_SubArchType sub_arch);
|
||||
ZIG_EXTERN_C const char *ZigLLVMGetVendorTypeName(enum ZigLLVM_VendorType vendor);
|
||||
|
|
Loading…
Reference in New Issue