Lines Matching refs:DIE

29 void DwarfCompileUnit::addLabelAddress(DIE &Die, dwarf::Attribute Attribute,
48 void DwarfCompileUnit::addLocalLabelAddress(DIE &Die,
98 /// getOrCreateGlobalVariableDIE - get or create global variable DIE.
99 DIE *DwarfCompileUnit::getOrCreateGlobalVariableDIE(DIGlobalVariable GV) {
101 if (DIE *Die = getDIE(GV))
109 // Construct the context before querying for the existence of the DIE in
110 // case such construction creates the DIE.
111 DIE *ContextDIE = getOrCreateContextDIE(GVContext);
114 DIE *VariableDIE = &createAndAddDIE(GV->getTag(), *ContextDIE, GV);
121 // We need the declaration DIE that is in the static member's class.
122 DIE *VariableSpecDIE = getOrCreateStaticMemberDIE(SDMDecl);
227 void DwarfCompileUnit::addSectionLabel(DIE &Die, dwarf::Attribute Attribute,
256 void DwarfCompileUnit::applyStmtList(DIE &D) {
262 void DwarfCompileUnit::attachLowHighPC(DIE &D, const MCSymbol *Begin,
276 // Find DIE for the given subprogram and attach appropriate DW_AT_low_pc
279 DIE &DwarfCompileUnit::updateSubprogramScopeDIE(DISubprogram SP) {
280 DIE *SPDie = getOrCreateSubprogramDIE(SP, includeMinimalInlineScopes());
302 // Construct a DIE for this scope.
304 LexicalScope *Scope, SmallVectorImpl<std::unique_ptr<DIE>> &FinalChildren) {
315 SmallVector<std::unique_ptr<DIE>, 8> Children;
317 // We try to create the scope DIE first, then the children DIEs. This will
319 // the scope DIE is null.
320 std::unique_ptr<DIE> ScopeDIE;
325 // We create children when the scope DIE is not null.
328 // Early exit when we know the scope DIE is going to be null.
334 // We create children here when we know the scope DIE is not going to be
335 // null and the children will be added to the scope DIE.
340 // There is no need to emit empty lexical block DIE.
355 assert(ScopeDIE && "Scope DIE should not be null.");
365 void DwarfCompileUnit::addSectionDelta(DIE &Die, dwarf::Attribute Attribute,
373 void DwarfCompileUnit::addScopeRangeList(DIE &ScopeDIE,
398 DIE &Die, SmallVector<RangeSpan, 2> Ranges) {
407 DIE &Die, const SmallVectorImpl<InsnRange> &Ranges) {
416 // This scope represents inlined body of a function. Construct DIE to
418 std::unique_ptr<DIE>
425 DIE *OriginDIE = DU->getAbstractSPDies()[InlinedSP];
426 assert(OriginDIE && "Unable to find original DIE for an inlined subprogram.");
428 auto ScopeDIE = make_unique<DIE>(dwarf::DW_TAG_inlined_subroutine);
433 // Add the call site information to the DIE.
448 std::unique_ptr<DIE>
453 auto ScopeDIE = make_unique<DIE>(dwarf::DW_TAG_lexical_block);
462 /// constructVariableDIE - Construct a DIE for the given DbgVariable.
463 std::unique_ptr<DIE> DwarfCompileUnit::constructVariableDIE(DbgVariable &DV,
470 std::unique_ptr<DIE>
474 auto VariableDie = make_unique<DIE>(DV.getTag());
534 std::unique_ptr<DIE> DwarfCompileUnit::constructVariableDIE(
535 DbgVariable &DV, const LexicalScope &Scope, DIE *&ObjectPointer) {
542 DIE *DwarfCompileUnit::createScopeChildrenDIE(
543 LexicalScope *Scope, SmallVectorImpl<std::unique_ptr<DIE>> &Children,
545 DIE *ObjectPointer = nullptr;
569 DIE &ScopeDIE = updateSubprogramScopeDIE(Sub);
577 if (DIE *ObjectPointer = createAndAddScopeChildren(Scope, ScopeDIE))
585 ScopeDIE.addChild(make_unique<DIE>(dwarf::DW_TAG_unspecified_parameters));
588 DIE *DwarfCompileUnit::createAndAddScopeChildren(LexicalScope *Scope,
589 DIE &ScopeDIE) {
590 // We create children when the scope DIE is not null.
591 SmallVector<std::unique_ptr<DIE>, 8> Children;
592 DIE *ObjectPointer = createScopeChildrenDIE(Scope, Children);
603 DIE *&AbsDef = DU->getAbstractSPDies()[Scope->getScopeNode()];
609 DIE *ContextDIE;
615 // DIE (since the DIDescriptor will be associated with the concrete DIE, if
631 if (DIE *ObjectPointer = createAndAddScopeChildren(Scope, *AbsDef))
635 std::unique_ptr<DIE>
637 std::unique_ptr<DIE> IMDie = make_unique<DIE>((dwarf::Tag)Module->getTag());
639 DIE *EntityDie;
663 DIE *D = getDIE(SP);
664 if (DIE *AbsSPDIE = DU->getAbstractSPDies().lookup(SP)) {
687 DIE *SPDIE = DU->getAbstractSPDies().lookup(SP);
710 void DwarfCompileUnit::addGlobalName(StringRef Name, DIE &Die,
719 void DwarfCompileUnit::addGlobalType(DIType Ty, const DIE &Die,
729 void DwarfCompileUnit::addVariableAddress(const DbgVariable &DV, DIE &Die,
740 void DwarfCompileUnit::addAddress(DIE &Die, dwarf::Attribute Attribute,
753 // Now attach the location information to the DIE.
761 void DwarfCompileUnit::addComplexAddress(const DbgVariable &DV, DIE &Die,
777 // Now attach the location information to the DIE.
783 void DwarfCompileUnit::addLocationList(DIE &Die, dwarf::Attribute Attribute,
792 DIE &VariableDie) {
810 DIE &SPDie) {