Lines Matching defs:die

109 static DWARFDIE GetContainingClangModuleDIE(const DWARFDIE &die) {
110 if (die.IsValid()) {
114 for (DWARFDIE parent = die.GetParent(); parent.IsValid();
128 static lldb::ModuleSP GetContainingClangModule(const DWARFDIE &die) {
129 if (die.IsValid()) {
130 DWARFDIE clang_module_die = GetContainingClangModuleDIE(die);
135 return die.GetDWARF()->GetExternalModule(
230 const DWARFDIE &die,
232 ModuleSP clang_module_sp = GetContainingClangModule(die);
239 std::vector<lldb_private::CompilerContext> die_context = die.GetDeclContext();
245 query.AddLanguage(SymbolFileDWARF::GetLanguageFamily(*die.GetCU()));
253 auto &sym_file = die.GetCU()->GetSymbolFileDWARF();
270 // it and cache the fact that we found a complete type for this die.
291 SymbolFileDWARF *dwarf = die.GetDWARF();
293 die.GetID(), pcm_type_sp->GetName(), pcm_type_sp->GetByteSize(nullptr),
296 TypePayloadClang(GetOwningClangModule(die)));
299 LinkDeclContextToDIE(tag_decl, die);
301 clang::DeclContext *defn_decl_ctx = GetCachedClangDeclContextForDIE(die);
303 LinkDeclContextToDIE(defn_decl_ctx, die);
316 DWARFDIE die,
335 die.GetDWARF()->GetObjectFile()->GetModule()->ReportError(
338 type_name_cstr ? type_name_cstr : "", die.GetOffset());
353 ParsedDWARFTypeAttributes::ParsedDWARFTypeAttributes(const DWARFDIE &die) {
354 DWARFAttributes attributes = die.GetAttributes();
401 // die.GetCU() can differ if DW_AT_specification uses DW_FORM_ref_addr.
499 static std::string GetUnitName(const DWARFDIE &die) {
500 if (DWARFUnit *unit = die.GetCU())
506 const DWARFDIE &die,
511 if (!die)
516 SymbolFileDWARF *dwarf = die.GetDWARF();
520 GetClangDeclContextContainingDIE(die, &context_die);
525 "(die = {0:x16}, decl_ctx = {1:p} (die "
527 die.GetOffset(), static_cast<void *>(context), context_die.GetOffset(),
528 DW_TAG_value_to_name(die.Tag()), die.Tag(), die.GetName());
533 dwarf->GetDIEToType().try_emplace(die.GetDIE(), DIE_IS_BEING_PARSED);
540 ParsedDWARFTypeAttributes attrs(die);
548 LinkDeclContextToDIE(decl_ctx, die);
554 const dw_tag_t tag = die.Tag();
568 type_sp = ParseTypeModifier(sc, die, attrs);
573 type_sp = ParseStructureLikeDIE(sc, die, attrs);
576 type_sp = ParseEnum(sc, die, attrs);
581 type_sp = ParseSubroutine(die, attrs);
584 type_sp = ParseArrayType(die, attrs);
587 type_sp = ParsePointerToMemberType(die, attrs);
594 die.GetOffset(), tag, DW_TAG_value_to_name(tag));
597 UpdateSymbolContextScopeForType(sc, die, type_sp);
600 dwarf->GetDIEToType()[die.GetDIE()] = type_sp.get();
606 ExtractDataMemberLocation(DWARFDIE const &die, DWARFFormValue const &form_value,
617 const DWARFDataExtractor &debug_info_data = die.GetData();
625 DataExtractor(debug_info_data, block_offset, block_length), die.GetCU(),
636 static TypePayloadClang GetPtrAuthMofidierPayload(const DWARFDIE &die) {
638 return die.GetAttributeValueAsUnsigned(Attr, defaultValue);
659 die.GetDWARF()->GetObjectFile()->GetModule()->ReportError(
661 die.GetOffset(), authentication_mode_int);
671 const DWARFDIE &die,
674 SymbolFileDWARF *dwarf = die.GetDWARF();
675 const dw_tag_t tag = die.Tag();
676 LanguageType cu_language = SymbolFileDWARF::GetLanguage(*die.GetCU());
679 TypePayloadClang payload(GetOwningClangModule(die));
688 GetClangDeclContextContainingDIE(die, nullptr), die,
717 // First make sure that the die that this is typedef'ed to _is_
724 type_sp = ParseTypeFromClangModule(sc, die, log);
731 DEBUG_PRINTF("0x%8.8" PRIx64 ": %s (\"%s\") type => 0x%8.8lx\n", die.GetID(),
779 payload = GetPtrAuthMofidierPayload(die);
789 DWARFDIE target_die = die.GetReferencedDIE(DW_AT_type);
831 "SymbolFileDWARF::ParseType (die = {0:x16}) {1} ({2}) '{3}' "
833 die.GetOffset(), DW_TAG_value_to_name(die.Tag()), die.Tag(),
834 die.GetName());
843 "SymbolFileDWARF::ParseType (die = {0:x16}) {1} ({2}) '{3}' "
845 die.GetOffset(), DW_TAG_value_to_name(die.Tag()), die.Tag(),
846 die.GetName());
855 "SymbolFileDWARF::ParseType (die = {0:x16}) {1} ({2}) '{3}' "
857 die.GetOffset(), DW_TAG_value_to_name(die.Tag()), die.Tag(),
858 die.GetName());
877 "SymbolFileDWARF::ParseType (die = {0:x16}) {1} ({2}) '{3}' "
879 die.GetOffset(), DW_TAG_value_to_name(die.Tag()), die.Tag(),
880 die.GetName());
891 return dwarf->MakeType(die.GetID(), attrs.name, attrs.byte_size, nullptr,
896 std::string DWARFASTParserClang::GetDIEClassTemplateParams(DWARFDIE die) {
897 if (DWARFDIE signature_die = die.GetReferencedDIE(DW_AT_signature))
898 die = signature_die;
900 if (llvm::StringRef(die.GetName()).contains("<"))
906 type_printer.appendAndTerminateTemplateParameters(die);
981 // No definition found. Proceed with the declaration die. We can use it to
1072 const ObjCLanguage::MethodName &objc_method, const DWARFDIE &die,
1075 SymbolFileDWARF *dwarf = die.GetDWARF();
1078 const auto tag = die.Tag();
1108 die.GetOffset(), tag, DW_TAG_value_to_name(tag));
1112 LinkDeclContextToDIE(objc_method_decl, die);
1113 m_ast.SetMetadataAsUserID(objc_method_decl, die.GetID());
1119 const DWARFDIE &die, CompilerType clang_type,
1123 SymbolFileDWARF *dwarf = die.GetDWARF();
1147 Type *type_ptr = dwarf->GetDIEToType().lookup(die.GetDIE());
1161 // die.
1166 LinkDeclContextToDIE(spec_clang_decl_ctx, die);
1171 die.GetID(), spec_die.GetOffset());
1186 LinkDeclContextToDIE(abs_clang_decl_ctx, die);
1191 die.GetID(), abs_die.GetOffset());
1202 TypeSystemClang::GetDeclContextForType(class_opaque_type), die,
1208 if (!is_static && !die.HasChildren())
1225 LinkDeclContextToDIE(cxx_method_decl, die);
1228 metadata.SetUserID(die.GetID());
1250 DWARFASTParserClang::ParseSubroutine(const DWARFDIE &die,
1254 SymbolFileDWARF *dwarf = die.GetDWARF();
1255 const dw_tag_t tag = die.Tag();
1260 DEBUG_PRINTF("0x%8.8" PRIx64 ": %s (\"%s\")\n", die.GetID(),
1281 GetClangDeclContextContainingDIE(die, &decl_ctx_die);
1284 if (die.HasChildren()) {
1285 ParseChildParameters(containing_decl_ctx, die, is_variadic,
1311 GetCXXObjectParameter(die, *containing_decl_ctx);
1318 GetCXXMethodCVQuals(die, object_parameter),
1328 ParseObjCMethod(*objc_method, die, clang_type, attrs, is_variadic);
1333 ParseCXXMethod(die, clang_type, attrs, decl_ctx_die, is_static,
1354 LinkDeclContextToDIE(function_decl, die);
1378 GetOwningClangModule(die), name, clang_type, attrs.storage,
1384 ParseTemplateParameterInfos(die, template_param_infos);
1388 GetOwningClangModule(die), attrs.name.GetStringRef(), clang_type,
1392 containing_decl_ctx, GetOwningClangModule(die),
1415 LinkDeclContextToDIE(function_decl, die);
1427 metadata.SetUserID(die.GetID());
1444 die.GetID(), attrs.name, std::nullopt, nullptr, LLDB_INVALID_UID,
1449 DWARFASTParserClang::ParseArrayType(const DWARFDIE &die,
1451 SymbolFileDWARF *dwarf = die.GetDWARF();
1453 DEBUG_PRINTF("0x%8.8" PRIx64 ": %s (\"%s\")\n", die.GetID(),
1462 std::optional<SymbolFile::ArrayInfo> array_info = ParseChildArrayInfo(die);
1494 dwarf->MakeType(die.GetID(), empty_name, array_element_bit_stride / 8,
1499 m_ast.SetMetadataAsUserID(type, die.GetID());
1504 const DWARFDIE &die, const ParsedDWARFTypeAttributes &attrs) {
1505 SymbolFileDWARF *dwarf = die.GetDWARF();
1523 return dwarf->MakeType(die.GetID(), attrs.name, *clang_type_size, nullptr,
1531 const DWARFDIE &die, const DWARFDIE &parent_die,
1542 DWARFAttributes attributes = die.GetAttributes();
1562 ExtractDataMemberLocation(die, form_value, module_sp))
1581 Type *base_class_type = die.ResolveTypeUID(encoding_form.Reference());
1588 die.GetOffset(),
1630 const SymbolContext &sc, const DWARFDIE &die, TypeSP type_sp) {
1634 DWARFDIE sc_parent_die = SymbolFileDWARF::GetParentSymbolContextDIE(die);
1656 const lldb_private::plugin::dwarf::DWARFDIE &die,
1662 if (!die.IsValid() || !Language::LanguageIsCPlusPlus(language) ||
1667 DWARFDIE parent_decl_ctx_die = die.GetParentDeclContextDIE();
1709 qualified_name.append(GetDIEClassTemplateParams(die));
1716 const DWARFDIE &die,
1719 const dw_tag_t tag = die.Tag();
1720 SymbolFileDWARF *dwarf = die.GetDWARF();
1721 LanguageType cu_language = SymbolFileDWARF::GetLanguage(*die.GetCU());
1729 GetUniqueTypeNameAndDeclaration(die, cu_language, unique_typename,
1734 static_cast<void *>(this), die.GetID(), DW_TAG_value_to_name(tag),
1739 unique_typename, die, unique_decl, byte_size,
1742 dwarf->GetDIEToType()[die.GetDIE()] = type_sp.get();
1744 GetCachedClangDeclContextForDIE(unique_ast_entry_type->m_die), die);
1750 unique_ast_entry_type->UpdateToDefDIE(die, unique_decl, byte_size);
1757 *die.GetDIERef());
1764 DEBUG_PRINTF("0x%8.8" PRIx64 ": %s (\"%s\")\n", die.GetID(),
1789 dwarf->FindCompleteObjCDefinitionTypeForDIE(die, attrs.name, true);
1797 die, attrs.name, true);
1807 static_cast<void *>(this), die.GetID(), DW_TAG_value_to_name(tag),
1817 TypeSP type_sp = ParseTypeFromClangModule(sc, die, log);
1825 GetClangDeclContextContainingDIE(die, nullptr);
1828 containing_decl_ctx, die,
1841 metadata.SetUserID(die.GetID());
1842 metadata.SetIsDynamicCXXType(dwarf->ClassOrStructIsVirtual(die));
1845 if (ParseTemplateParameterInfos(die, template_param_infos)) {
1848 containing_decl_ctx, GetOwningClangModule(die), attrs.accessibility,
1856 static_cast<void *>(this), die.GetID(), DW_TAG_value_to_name(tag),
1864 containing_decl_ctx, GetOwningClangModule(die), class_template_decl,
1875 containing_decl_ctx, GetOwningClangModule(die), attrs.accessibility,
1881 die.GetID(), attrs.name, attrs.byte_size, nullptr, LLDB_INVALID_UID,
1891 LinkDeclContextToDIE(type_decl_ctx, die);
1902 unique_ast_entry_up->m_die = die;
1918 *die.GetDIERef())
1981 const DWARFDIE &die,
1983 const dw_tag_t tag = die.Tag();
1990 for (DWARFDIE child_die : die.children()) {
1994 if (const char *name = die.GetName()) {
2004 DWARFAttributes attributes = die.GetAttributes();
2031 Type *lldb_type = die.ResolveTypeUID(form_value.Reference());
2101 for (DWARFDIE die : parent_die.children()) {
2102 const dw_tag_t tag = die.Tag();
2109 ParseTemplateDIE(die, template_param_infos);
2121 bool DWARFASTParserClang::CompleteRecordType(const DWARFDIE &die,
2123 const dw_tag_t tag = die.Tag();
2124 SymbolFileDWARF *dwarf = die.GetDWARF();
2129 if (die.GetAttributeValueAsUnsigned(DW_AT_declaration, 0))
2152 ParseChildMembers(die, clang_type, bases, member_function_dies,
2157 for (const DWARFDIE &die : member_function_dies)
2158 dwarf->ResolveType(die);
2192 die.GetAttributeValueAsUnsigned(DW_AT_byte_size, 0) * 8;
2194 die.GetAttributeValueAsUnsigned(llvm::dwarf::DW_AT_alignment, 0) * 8;
2215 for (const DWARFDIE &die : contained_type_dies)
2216 dwarf->ResolveType(die);
2221 bool DWARFASTParserClang::CompleteEnumType(const DWARFDIE &die,
2225 if (die.HasChildren()) {
2229 type->GetByteSize(nullptr).value_or(0), die);
2237 const DWARFDIE &die, lldb_private::Type *type,
2239 SymbolFileDWARF *dwarf = die.GetDWARF();
2248 if (!die)
2251 const dw_tag_t tag = die.Tag();
2258 CompleteRecordType(die, clang_type);
2261 CompleteEnumType(die, type, clang_type);
2290 CompilerDecl DWARFASTParserClang::GetDeclForUIDFromDWARF(const DWARFDIE &die) {
2291 clang::Decl *clang_decl = GetClangDeclForDIE(die);
2298 DWARFASTParserClang::GetDeclContextForUIDFromDWARF(const DWARFDIE &die) {
2299 clang::DeclContext *clang_decl_ctx = GetClangDeclContextForDIE(die);
2306 DWARFASTParserClang::GetDeclContextContainingUIDFromDWARF(const DWARFDIE &die) {
2308 GetClangDeclContextContainingDIE(die, nullptr);
2322 for (DWARFDIE die : parent_die.children()) {
2323 const dw_tag_t tag = die.Tag();
2327 DWARFAttributes attributes = die.GetAttributes();
2381 DWARFASTParserClang::ConstructDemangledNameFromDWARF(const DWARFDIE &die) {
2388 DWARFDeclContext decl_ctx = die.GetDWARFDeclContext();
2392 GetClangDeclContextContainingDIE(die, nullptr);
2396 die, GetCXXObjectParameter(die, *containing_decl_ctx));
2398 ParseChildParameters(containing_decl_ctx, die, is_variadic,
2416 CompileUnit &comp_unit, const DWARFDIE &die, AddressRanges func_ranges) {
2428 const dw_tag_t tag = die.Tag();
2433 if (die.GetDIENamesAndRanges(name, mangled, unused_func_ranges, decl_file,
2439 else if ((die.GetParent().Tag() == DW_TAG_compile_unit ||
2440 die.GetParent().Tag() == DW_TAG_partial_unit) &&
2442 SymbolFileDWARF::GetLanguage(*die.GetCU())) &&
2444 SymbolFileDWARF::GetLanguage(*die.GetCU())) &&
2449 func_name.SetValue(ConstructDemangledNameFromDWARF(die));
2457 die.GetCU()->GetFile(decl_file ? *decl_file : 0),
2460 SymbolFileDWARF *dwarf = die.GetDWARF();
2462 Type *func_type = dwarf->GetDIEToType().lookup(die.GetDIE());
2466 const user_id_t func_user_id = die.GetID();
2505 explicit PropertyAttributes(const DWARFDIE &die);
2514 explicit DiscriminantValue(const DWARFDIE &die, ModuleSP module_sp);
2522 explicit VariantMember(DWARFDIE &die, ModuleSP module_sp);
2533 explicit VariantPart(const DWARFDIE &die, const DWARFDIE &parent_die,
2551 VariantMember::VariantMember(DWARFDIE &die, lldb::ModuleSP module_sp) {
2552 assert(die.Tag() == llvm::dwarf::DW_TAG_variant);
2554 die.GetAttributeValueAsOptionalUnsigned(DW_AT_discr_value);
2556 for (auto child_die : die.children()) {
2574 ExtractDataMemberLocation(die, form_value, module_sp))
2592 DiscriminantValue::DiscriminantValue(const DWARFDIE &die, ModuleSP module_sp) {
2593 auto referenced_die = die.GetReferencedDIE(DW_AT_discr);
2605 ExtractDataMemberLocation(die, form_value, module_sp))
2615 VariantPart::VariantPart(const DWARFDIE &die, const DWARFDIE &parent_die,
2617 : _members(), _discriminant(die, module_sp) {
2619 for (auto child : die.children()) {
2631 const DWARFDIE &die, const DWARFDIE &parent_die, ModuleSP module_sp) {
2632 DWARFAttributes attributes = die.GetAttributes();
2661 ExtractDataMemberLocation(die, form_value, module_sp))
2699 PropertyAttributes::PropertyAttributes(const DWARFDIE &die) {
2701 DWARFAttributes attributes = die.GetAttributes();
2762 const DWARFDIE &die, const DWARFDIE &parent_die,
2766 assert(die.Tag() == DW_TAG_APPLE_property);
2770 const MemberAttributes attrs(die, parent_die, module_sp);
2771 const PropertyAttributes propAttrs(die);
2775 die.GetID());
2779 Type *member_type = die.ResolveTypeUID(attrs.encoding_form.Reference());
2784 die.GetID(), propAttrs.prop_name,
2790 metadata.SetUserID(die.GetID());
2854 const DWARFDIE &die, const MemberAttributes &attrs,
2857 assert(die.Tag() == DW_TAG_member || die.Tag() == DW_TAG_variable);
2859 Type *var_type = die.ResolveTypeUID(attrs.encoding_form.Reference());
2893 const DWARFDIE &die, const DWARFDIE &parent_die,
2899 assert(die.Tag() == DW_TAG_member);
2902 const dw_tag_t tag = die.Tag();
2909 const MemberAttributes attrs(die, parent_die, module_sp);
2924 CreateStaticMemberVariable(die, attrs, class_clang_type);
2928 Type *member_type = die.ResolveTypeUID(attrs.encoding_form.Reference());
2934 die.GetID(), attrs.name, attrs.encoding_form.Reference().GetOffset());
2938 die.GetID(),
2966 ObjectFile *objfile = die.GetDWARF()->GetObjectFile();
2988 ObjectFile *objfile = die.GetDWARF()->GetObjectFile();
2994 die.GetID(), DW_TAG_value_to_name(tag), tag, attrs.name,
3009 die.GetCU()->Supports_unnamed_objc_bitfields();
3073 die.GetID(), attrs.name,
3089 m_ast.SetMetadataAsUserID(field_decl, die.GetID());
3114 for (DWARFDIE die : parent_die.children()) {
3115 dw_tag_t tag = die.Tag();
3119 ParseObjCProperty(die, parent_die, class_clang_type, delayed_properties);
3123 if (die.GetCU()->GetDWARFLanguageType() == eLanguageTypeRust) {
3124 ParseRustVariantPart(die, parent_die, class_clang_type,
3130 const MemberAttributes attrs(die, parent_die, module_sp);
3131 CreateStaticMemberVariable(die, attrs, class_clang_type);
3134 ParseSingleMember(die, parent_die, class_clang_type,
3140 member_function_dies.push_back(die);
3144 ParseInheritance(die, parent_die, class_clang_type, default_accessibility,
3150 contained_type_dies.push_back(die);
3166 for (DWARFDIE die : parent_die.children()) {
3167 const dw_tag_t tag = die.Tag();
3170 if (die.GetAttributeValueAsUnsigned(DW_AT_artificial, 0))
3173 DWARFDIE param_type_die = die.GetAttributeValueAsReferenceDIE(DW_AT_type);
3175 Type *type = die.ResolveTypeUID(param_type_die);
3179 function_param_names.emplace_back(die.GetName());
3194 // ParseTemplateDIE (dwarf_cu, die, template_param_infos);
3206 clang::Decl *DWARFASTParserClang::GetClangDeclForDIE(const DWARFDIE &die) {
3207 if (!die)
3210 switch (die.Tag()) {
3217 // This means 'die' is a C++ static data member.
3220 if (auto parent = die.GetParent();
3228 DIEToDeclMap::iterator cache_pos = m_die_to_decl.find(die.GetDIE());
3232 if (DWARFDIE spec_die = die.GetReferencedDIE(DW_AT_specification)) {
3234 m_die_to_decl[die.GetDIE()] = decl;
3239 die.GetReferencedDIE(DW_AT_abstract_origin)) {
3241 m_die_to_decl[die.GetDIE()] = decl;
3246 switch (die.Tag()) {
3250 SymbolFileDWARF *dwarf = die.GetDWARF();
3251 Type *type = GetTypeForDIE(die);
3253 const char *name = die.GetName();
3256 dwarf->GetDeclContextContainingUID(die.GetID()));
3258 decl_context, GetOwningClangModule(die), name,
3264 SymbolFileDWARF *dwarf = die.GetDWARF();
3265 DWARFDIE imported_uid = die.GetAttributeValueAsReferenceDIE(DW_AT_import);
3271 dwarf->GetDeclContextContainingUID(die.GetID()));
3282 SymbolFileDWARF *dwarf = die.GetDWARF();
3283 DWARFDIE imported_uid = die.GetAttributeValueAsReferenceDIE(DW_AT_import);
3291 dwarf->GetDeclContextContainingUID(die.GetID()));
3305 m_die_to_decl[die.GetDIE()] = decl;
3311 DWARFASTParserClang::GetClangDeclContextForDIE(const DWARFDIE &die) {
3312 if (die) {
3313 clang::DeclContext *decl_ctx = GetCachedClangDeclContextForDIE(die);
3318 switch (die.Tag()) {
3326 decl_ctx = ResolveNamespaceDIE(die);
3331 decl_ctx = ResolveImportedDeclarationDIE(die);
3336 decl_ctx = GetDeclContextForBlock(die);
3345 Type *type = die.GetDWARF()->ResolveType(die);
3347 decl_ctx = GetCachedClangDeclContextForDIE(die);
3351 LinkDeclContextToDIE(decl_ctx, die);
3359 DWARFASTParserClang::GetOwningClangModule(const DWARFDIE &die) {
3360 if (!die.IsValid())
3363 for (DWARFDIE parent = die.GetParent(); parent.IsValid();
3385 static bool IsSubroutine(const DWARFDIE &die) {
3386 switch (die.Tag()) {
3395 static DWARFDIE GetContainingFunctionWithAbstractOrigin(const DWARFDIE &die) {
3396 for (DWARFDIE candidate = die; candidate; candidate = candidate.GetParent()) {
3433 DWARFASTParserClang::GetDeclContextForBlock(const DWARFDIE &die) {
3434 assert(die.Tag() == DW_TAG_lexical_block);
3436 GetContainingFunctionWithAbstractOrigin(die);
3438 return (clang::DeclContext *)ResolveBlockDIE(die);
3441 die, containing_function_with_abstract_origin);
3447 clang::BlockDecl *DWARFASTParserClang::ResolveBlockDIE(const DWARFDIE &die) {
3448 if (die && die.Tag() == DW_TAG_lexical_block) {
3450 llvm::cast_or_null<clang::BlockDecl>(m_die_to_decl_ctx[die.GetDIE()]);
3455 GetClangDeclContextContainingDIE(die, &decl_context_die);
3457 m_ast.CreateBlockDeclaration(decl_context, GetOwningClangModule(die));
3460 LinkDeclContextToDIE((clang::DeclContext *)decl, die);
3469 DWARFASTParserClang::ResolveNamespaceDIE(const DWARFDIE &die) {
3470 if (die && die.Tag() == DW_TAG_namespace) {
3474 static_cast<clang::NamespaceDecl *>(m_die_to_decl_ctx[die.GetDIE()]);
3478 const char *namespace_name = die.GetName();
3480 GetClangDeclContextContainingDIE(die, nullptr);
3482 die.GetAttributeValueAsUnsigned(DW_AT_export_symbols, 0) != 0;
3485 namespace_name, containing_decl_ctx, GetOwningClangModule(die),
3489 LinkDeclContextToDIE((clang::DeclContext *)namespace_decl, die);
3497 DWARFASTParserClang::ResolveImportedDeclarationDIE(const DWARFDIE &die) {
3498 assert(die && die.Tag() == DW_TAG_imported_declaration);
3502 auto it = m_die_to_decl_ctx.find(die.GetDIE());
3509 die.GetAttributeValueAsReferenceDIE(DW_AT_import);
3527 LinkDeclContextToDIE(namespace_decl, die);
3533 const DWARFDIE &die, DWARFDIE *decl_ctx_die_copy) {
3534 SymbolFileDWARF *dwarf = die.GetDWARF();
3536 DWARFDIE decl_ctx_die = dwarf->GetDeclContextDIEContainingDIE(die);
3551 DWARFASTParserClang::GetCachedClangDeclContextForDIE(const DWARFDIE &die) {
3552 if (die) {
3553 DIEToDeclContextMap::iterator pos = m_die_to_decl_ctx.find(die.GetDIE());
3561 const DWARFDIE &die) {
3562 m_die_to_decl_ctx[die.GetDIE()] = decl_ctx;
3564 // m_decl_ctx_to_die[decl_ctx].insert(die.GetDIE());
3565 m_decl_ctx_to_die.insert(std::make_pair(decl_ctx, die));
3581 auto gather = [](DWARFDIE die, UniqueCStringMap<DWARFDIE> &map,
3583 if (die.Tag() != DW_TAG_subprogram)
3589 if (die.GetAttributeValueAsUnsigned(DW_AT_declaration, 0) != 1)
3592 if (const char *name = die.GetMangledName()) {
3594 if (die.GetAttributeValueAsUnsigned(DW_AT_artificial, 0))
3595 map_artificial.Append(const_name, die);
3597 map.Append(const_name, die);
3789 DWARFDIE &die, const DWARFDIE &parent_die,
3793 assert(die.Tag() == llvm::dwarf::DW_TAG_variant_part);
3794 assert(SymbolFileDWARF::GetLanguage(*die.GetCU()) ==
3799 VariantPart variants(die, parent_die, module_sp);
3802 die.ResolveTypeUID(variants.discriminant().type_ref.Reference());
3818 auto member_type = die.ResolveTypeUID(member.type_ref.Reference());