Lines Matching refs:DIE

48                                        DIELoc &DIE)
51 AP(AP), DU(DU), DIE(DIE) {}
54 DU.addUInt(DIE, dwarf::DW_FORM_data1, Op);
57 DU.addSInt(DIE, dwarf::DW_FORM_sdata, Value);
60 DU.addUInt(DIE, dwarf::DW_FORM_udata, Value);
70 UnitDie(*DIE::get(DIEValueAllocator, UnitTag)), DebugInfoOffset(0),
158 /// Check whether the DIE for this MDNode can be shared across CUs.
160 // When the MDNode can be part of the type system, the DIE can be shared
162 // Combining type units and cross-CU DIE sharing is lower value (since
163 // cross-CU DIE sharing is used in LTO and removes type redundancy at that
172 DIE *DwarfUnit::getDIE(const DINode *D) const {
178 void DwarfUnit::insertDIE(const DINode *Desc, DIE *D) {
186 void DwarfUnit::addFlag(DIE &Die, dwarf::Attribute Attribute) {
219 void DwarfUnit::addString(DIE &Die, dwarf::Attribute Attribute,
237 void DwarfUnit::addSectionOffset(DIE &Die, dwarf::Attribute Attribute,
261 void DwarfUnit::addLabelDelta(DIE &Die, dwarf::Attribute Attribute,
267 void DwarfUnit::addDIEEntry(DIE &Die, dwarf::Attribute Attribute, DIE &Entry) {
271 void DwarfUnit::addDIETypeSignature(DIE &Die, const DwarfTypeUnit &Type) {
282 void DwarfUnit::addDIETypeSignature(DIE &Die, dwarf::Attribute Attribute,
289 void DwarfUnit::addDIEEntry(DIE &Die, dwarf::Attribute Attribute,
291 const DIE *DieCU = Die.getUnitOrNull();
292 const DIE *EntryCU = Entry.getEntry().getUnitOrNull();
303 DIE &DwarfUnit::createAndAddDIE(unsigned Tag, DIE &Parent, const DINode *N) {
304 DIE &Die = Parent.addChild(DIE::get(DIEValueAllocator, (dwarf::Tag)Tag));
310 void DwarfUnit::addBlock(DIE &Die, dwarf::Attribute Attribute, DIELoc *Loc) {
317 void DwarfUnit::addBlock(DIE &Die, dwarf::Attribute Attribute,
324 void DwarfUnit::addSourceLine(DIE &Die, unsigned Line, StringRef File,
335 void DwarfUnit::addSourceLine(DIE &Die, const DILocalVariable *V) {
342 void DwarfUnit::addSourceLine(DIE &Die, const DIGlobalVariable *G) {
348 void DwarfUnit::addSourceLine(DIE &Die, const DISubprogram *SP) {
354 void DwarfUnit::addSourceLine(DIE &Die, const DIType *Ty) {
360 void DwarfUnit::addSourceLine(DIE &Die, const DIObjCProperty *Ty) {
366 void DwarfUnit::addSourceLine(DIE &Die, const DINamespace *NS) {
437 void DwarfUnit::addBlockByrefAddress(const DbgVariable &DV, DIE &Die,
510 // Now attach the location information to the DIE.
590 void DwarfUnit::addConstantFPValue(DIE &Die, const MachineOperand &MO) {
612 void DwarfUnit::addConstantFPValue(DIE &Die, const ConstantFP *CFP) {
617 void DwarfUnit::addConstantValue(DIE &Die, const ConstantInt *CI,
622 void DwarfUnit::addConstantValue(DIE &Die, const MachineOperand &MO,
629 void DwarfUnit::addConstantValue(DIE &Die, bool Unsigned, uint64_t Val) {
636 void DwarfUnit::addConstantValue(DIE &Die, const APInt &Val, const DIType *Ty) {
640 void DwarfUnit::addConstantValue(DIE &Die, const APInt &Val, bool Unsigned) {
669 void DwarfUnit::addLinkageName(DIE &Die, StringRef LinkageName) {
677 void DwarfUnit::addTemplateParams(DIE &Buffer, DINodeArray TParams) {
687 DIE *DwarfUnit::getOrCreateContextDIE(const DIScope *Context) {
701 DIE *DwarfUnit::createTypeDIE(const DICompositeType *Ty) {
703 DIE *ContextDIE = getOrCreateContextDIE(Context);
705 if (DIE *TyDIE = getDIE(Ty))
709 DIE &TyDIE = createAndAddDIE(Ty->getTag(), *ContextDIE, Ty);
718 DIE *DwarfUnit::getOrCreateTypeDIE(const MDNode *TyNode) {
730 // Construct the context before querying for the existence of the DIE in case
731 // such construction creates the DIE.
733 DIE *ContextDIE = getOrCreateContextDIE(Context);
736 if (DIE *TyDIE = getDIE(Ty))
740 DIE &TyDIE = createAndAddDIE(Ty->getTag(), *ContextDIE, Ty);
764 const DIType *Ty, const DIE &TyDIE) {
781 void DwarfUnit::addType(DIE &Entity, const DIType *Ty,
821 void DwarfUnit::constructTypeDIE(DIE &Buffer, const DIBasicType *BTy) {
839 void DwarfUnit::constructTypeDIE(DIE &Buffer, const DIDerivedType *DTy) {
870 void DwarfUnit::constructSubprogramArguments(DIE &Buffer, DITypeRefArray Args) {
877 DIE &Arg = createAndAddDIE(dwarf::DW_TAG_formal_parameter, Buffer);
885 void DwarfUnit::constructTypeDIE(DIE &Buffer, const DISubroutineType *CTy) {
913 void DwarfUnit::constructTypeDIE(DIE &Buffer, const DICompositeType *CTy) {
946 DIE &ElemDie = createAndAddDIE(dwarf::DW_TAG_friend, Buffer);
954 DIE &ElemDie = createAndAddDIE(Property->getTag(), Buffer);
1029 DIE &Buffer, const DITemplateTypeParameter *TP) {
1030 DIE &ParamDIE =
1040 DIE &Buffer, const DITemplateValueParameter *VP) {
1041 DIE &ParamDIE = createAndAddDIE(VP->getTag(), Buffer);
1071 DIE *DwarfUnit::getOrCreateNameSpace(const DINamespace *NS) {
1072 // Construct the context before querying for the existence of the DIE in case
1073 // such construction creates the DIE.
1074 DIE *ContextDIE = getOrCreateContextDIE(NS->getScope());
1076 if (DIE *NDie = getDIE(NS))
1078 DIE &NDie = createAndAddDIE(dwarf::DW_TAG_namespace, *ContextDIE, NS);
1091 DIE *DwarfUnit::getOrCreateModule(const DIModule *M) {
1092 // Construct the context before querying for the existence of the DIE in case
1093 // such construction creates the DIE.
1094 DIE *ContextDIE = getOrCreateContextDIE(M->getScope());
1096 if (DIE *MDie = getDIE(M))
1098 DIE &MDie = createAndAddDIE(dwarf::DW_TAG_module, *ContextDIE, M);
1115 DIE *DwarfUnit::getOrCreateSubprogramDIE(const DISubprogram *SP, bool Minimal) {
1116 // Construct the context before querying for the existence of the DIE in case
1117 // such construction creates the DIE (as is the case for member function
1119 DIE *ContextDIE =
1122 if (DIE *SPDie = getDIE(SP))
1134 // DW_TAG_inlined_subroutine may refer to this DIE.
1135 DIE &SPDie = createAndAddDIE(dwarf::DW_TAG_subprogram, *ContextDIE, SP);
1147 DIE &SPDie) {
1148 DIE *DeclDie = nullptr;
1152 assert(DeclDie && "This DIE should've already been constructed when the "
1153 "definition DIE was created in "
1186 void DwarfUnit::applySubprogramAttributes(const DISubprogram *SP, DIE &SPDie,
1271 void DwarfUnit::constructSubrangeDIE(DIE &Buffer, const DISubrange *SR,
1272 DIE *IndexTy) {
1273 DIE &DW_Subrange = createAndAddDIE(dwarf::DW_TAG_subrange_type, Buffer);
1293 DIE *DwarfUnit::getIndexTyDie() {
1305 void DwarfUnit::constructArrayTypeDIE(DIE &Buffer, const DICompositeType *CTy) {
1315 DIE *IdxTy = getIndexTyDie();
1327 void DwarfUnit::constructEnumTypeDIE(DIE &Buffer, const DICompositeType *CTy) {
1334 DIE &Enumerator = createAndAddDIE(dwarf::DW_TAG_enumerator, Buffer);
1352 DIE &SPDie = *CI->first;
1356 DIE *NDie = getDIE(D);
1363 void DwarfUnit::constructMemberDIE(DIE &Buffer, const DIDerivedType *DT) {
1364 DIE &MemberDie = createAndAddDIE(DT->getTag(), Buffer);
1463 if (DIE *PDie = getDIE(PNode))
1471 DIE *DwarfUnit::getOrCreateStaticMemberDIE(const DIDerivedType *DT) {
1475 // Construct the context before querying for the existence of the DIE in case
1476 // such construction creates the DIE.
1477 DIE *ContextDIE = getOrCreateContextDIE(resolve(DT->getScope()));
1481 if (DIE *StaticMemberDIE = getDIE(DT))
1484 DIE &StaticMemberDIE = createAndAddDIE(DT->getTag(), *ContextDIE, DT);
1543 Asm->OutStreamer->AddComment("Type DIE Offset");
1544 // In a skeleton type unit there is no type DIE so emit a zero offset.