reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

Declarations

include/llvm/CodeGen/AsmPrinter.h
   41 class DIE;
include/llvm/CodeGen/DIE.h
   39 class DIE;
lib/CodeGen/AsmPrinter/DwarfDebug.h
   53 class DIE;
unittests/DebugInfo/DWARF/DwarfGenerator.h
   29 class DIE;

References

include/llvm/ADT/DenseMapInfo.h
   39   static inline T* getEmptyKey() {
   41     Val <<= PointerLikeTypeTraits<T*>::NumLowBitsAvailable;
   45   static inline T* getTombstoneKey() {
   47     Val <<= PointerLikeTypeTraits<T*>::NumLowBitsAvailable;
   51   static unsigned getHashValue(const T *PtrVal) {
   56   static bool isEqual(const T *LHS, const T *RHS) { return LHS == RHS; }
   56   static bool isEqual(const T *LHS, const T *RHS) { return LHS == RHS; }
include/llvm/ADT/iterator.h
   68     : public std::iterator<IteratorCategoryT, T, DifferenceTypeT, PointerT,
include/llvm/CodeGen/AccelTable.h
  201   void addName(DwarfStringPoolEntryRef Name, Types &&... Args);
  254   DWARF5AccelTableData(const DIE &Die) : Die(Die) {}
  260   const DIE &getDie() const { return Die; }
  265   const DIE &Die;
  323   AppleAccelTableOffsetData(const DIE &D) : Die(D) {}
  336   const DIE &Die;
  342   AppleAccelTableTypeData(const DIE &D) : AppleAccelTableOffsetData(D) {}
include/llvm/CodeGen/AsmPrinter.h
  589   void emitDwarfDIE(const DIE &Die) const;
include/llvm/CodeGen/DIE.h
  154   DIEAbbrev &uniqueAbbreviation(DIE &Die);
  314   DIE *Entry;
  318   explicit DIEEntry(DIE &E) : Entry(&E) {}
  320   DIE &getEntry() const { return *Entry; }
  542   void push_back(T &N) { IntrusiveBackListBase::push_back(N); }
  543   void push_front(T &N) { IntrusiveBackListBase::push_front(N); }
  544   T &back() { return *static_cast<T *>(Last); }
  545   const T &back() const { return *static_cast<T *>(Last); }
  546   T &front() {
  549   const T &front() const {
  553   void takeNodes(IntrusiveBackList<T> &Other) {
  563       : public iterator_facade_base<iterator, std::forward_iterator_tag, T> {
  570     explicit iterator(T *N) : N(N) {}
  578     T &operator*() const { return *static_cast<T *>(N); }
  586                                     const T> {
  592     const_iterator(typename IntrusiveBackList<T>::iterator X) : N(X.N) {}
  593     explicit const_iterator(const T *N) : N(N) {}
  601     const T &operator*() const { return *static_cast<const T *>(N); }
  616   static iterator toIterator(T &N) { return iterator(&N); }
  617   static const_iterator toIterator(const T &N) { return const_iterator(&N); }
  727   IntrusiveBackList<DIE> Children;
  731   PointerUnion<DIE *, DIEUnit *> Owner;
  737   DIE(const DIE &RHS) = delete;
  738   DIE(DIE &&RHS) = delete;
  739   DIE &operator=(const DIE &RHS) = delete;
  739   DIE &operator=(const DIE &RHS) = delete;
  740   DIE &operator=(const DIE &&RHS) = delete;
  740   DIE &operator=(const DIE &&RHS) = delete;
  742   static DIE *get(BumpPtrAllocator &Alloc, dwarf::Tag Tag) {
  743     return new (Alloc) DIE(Tag);
  755   using child_iterator = IntrusiveBackList<DIE>::iterator;
  756   using const_child_iterator = IntrusiveBackList<DIE>::const_iterator;
  767   DIE *getParent() const;
  806   const DIE *getUnitDie() const;
  819   DIE &addChild(DIE *Child) {
  819   DIE &addChild(DIE *Child) {
  826   DIE &addChildFront(DIE *Child) {
  826   DIE &addChildFront(DIE *Child) {
  851   DIE Die;
  891   DIE &getUnitDie() { return Die; }
  892   const DIE &getUnitDie() const { return Die; }
include/llvm/Support/PointerLikeTypeTraits.h
   56   static inline void *getAsVoidPointer(T *P) { return P; }
   57   static inline T *getFromVoidPointer(void *P) { return static_cast<T *>(P); }
   59   enum { NumLowBitsAvailable = detail::ConstantLog2<alignof(T)>::value };
   91   typedef PointerLikeTypeTraits<T *> NonConst;
   93   static inline const void *getAsVoidPointer(const T *P) {
   96   static inline const T *getFromVoidPointer(const void *P) {
lib/CodeGen/AsmPrinter/AccelTable.cpp
  578         const DIE *CUDie = Entry.getDie().getUnitDie();
lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp
  252 void AsmPrinter::emitDwarfDIE(const DIE &Die) const {
lib/CodeGen/AsmPrinter/DIE.cpp
  146 DIEAbbrev &DIEAbbrevSet::uniqueAbbreviation(DIE &Die) {
  182 DIE *DIE::getParent() const {
  183   return Owner.dyn_cast<DIE*>();
  203 const DIE *DIE::getUnitDie() const {
  204   const DIE *p = this;
  215   const DIE *UnitDie = getUnitDie();
  265   for (const auto &Child : children())
  299     for (auto &Child : children())
lib/CodeGen/AsmPrinter/DIEHash.cpp
   32 static StringRef getDIEStringAttr(const DIE &Die, uint16_t Attr) {
   80 void DIEHash::addParentContext(const DIE &Parent) {
   86   SmallVector<const DIE *, 1> Parents;
   87   const DIE *Cur = &Parent;
   97   for (SmallVectorImpl<const DIE *>::reverse_iterator I = Parents.rbegin(),
  100     const DIE &Die = **I;
  117 void DIEHash::collectAttributes(const DIE &Die, DIEAttrs &Attrs) {
  136                                        const DIE &Entry, StringRef Name) {
  144   if (const DIE *Parent = Entry.getParent())
  175                            const DIE &Entry) {
  217 void DIEHash::hashBlockData(const DIE::const_value_range &Values) {
  331 void DIEHash::addAttributes(const DIE &Die) {
  337 void DIEHash::hashNestedType(const DIE &Die, StringRef Name) {
  352 void DIEHash::computeHash(const DIE &Die) {
  383 uint64_t DIEHash::computeCUSignature(StringRef DWOName, const DIE &Die) {
  406 uint64_t DIEHash::computeTypeSignature(const DIE &Die) {
  410   if (const DIE *Parent = Die.getParent())
lib/CodeGen/AsmPrinter/DIEHash.h
   38   uint64_t computeCUSignature(StringRef DWOName, const DIE &Die);
   41   uint64_t computeTypeSignature(const DIE &Die);
   46   void addParentContext(const DIE &Parent);
   49   void addAttributes(const DIE &Die);
   52   void computeHash(const DIE &Die);
   71   void collectAttributes(const DIE &Die, DIEAttrs &Attrs);
   78   void hashBlockData(const DIE::const_value_range &Values);
   88                     const DIE &Entry);
   93   void hashShallowTypeReference(dwarf::Attribute Attribute, const DIE &Entry,
  100   void hashNestedType(const DIE &Die, StringRef Name);
  105   DenseMap<const DIE *, unsigned> Numbering;
lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
   65 void DwarfCompileUnit::addLabelAddress(DIE &Die, dwarf::Attribute Attribute,
   85 void DwarfCompileUnit::addLocalLabelAddress(DIE &Die,
  113 DIE *DwarfCompileUnit::getOrCreateGlobalVariableDIE(
  116   if (DIE *Die = getDIE(GV))
  127   DIE *ContextDIE = CB ? getOrCreateCommonBlock(CB, GlobalExprs)
  131   DIE *VariableDIE = &createAndAddDIE(GV->getTag(), *ContextDIE, GV);
  138     DIE *VariableSpecDIE = getOrCreateStaticMemberDIE(SDMDecl);
  177     DIE *VariableDIE, const DIGlobalVariable *GV, ArrayRef<GlobalExpr> GlobalExprs) {
  302 DIE *DwarfCompileUnit::getOrCreateCommonBlock(
  306   DIE *ContextDIE = getOrCreateContextDIE(CB->getScope());
  308   if (DIE *NDie = getDIE(CB))
  310   DIE &NDie = createAndAddDIE(dwarf::DW_TAG_common_block, *ContextDIE, CB);
  362 void DwarfCompileUnit::applyStmtList(DIE &D) {
  366 void DwarfCompileUnit::attachLowHighPC(DIE &D, const MCSymbol *Begin,
  383 DIE &DwarfCompileUnit::updateSubprogramScopeDIE(const DISubprogram *SP) {
  384   DIE *SPDie = getOrCreateSubprogramDIE(SP, includeMinimalInlineScopes());
  415     LexicalScope *Scope, SmallVectorImpl<DIE *> &FinalChildren) {
  426   SmallVector<DIE *, 8> Children;
  431   DIE *ScopeDIE;
  468 void DwarfCompileUnit::addScopeRangeList(DIE &ScopeDIE,
  502     DIE &Die, SmallVector<RangeSpan, 2> Ranges) {
  512     DIE &Die, const SmallVectorImpl<InsnRange> &Ranges) {
  523 DIE *DwarfCompileUnit::constructInlinedScopeDIE(LexicalScope *Scope) {
  529   DIE *OriginDIE = getAbstractSPDies()[InlinedSP];
  532   auto ScopeDIE = DIE::get(DIEValueAllocator, dwarf::DW_TAG_inlined_subroutine);
  557 DIE *DwarfCompileUnit::constructLexicalScopeDIE(LexicalScope *Scope) {
  561   auto ScopeDIE = DIE::get(DIEValueAllocator, dwarf::DW_TAG_lexical_block);
  571 DIE *DwarfCompileUnit::constructVariableDIE(DbgVariable &DV, bool Abstract) {
  577 DIE *DwarfCompileUnit::constructLabelDIE(DbgLabel &DL,
  579   auto LabelDie = DIE::get(DIEValueAllocator, DL.getTag());
  589 DIE *DwarfCompileUnit::constructVariableDIEImpl(const DbgVariable &DV,
  592   auto VariableDie = DIE::get(DIEValueAllocator, DV.getTag());
  690 DIE *DwarfCompileUnit::constructVariableDIE(DbgVariable &DV,
  692                                             DIE *&ObjectPointer) {
  774 DIE *DwarfCompileUnit::createScopeChildrenDIE(LexicalScope *Scope,
  775                                               SmallVectorImpl<DIE *> &Children,
  778   DIE *ObjectPointer = nullptr;
  810 DIE &DwarfCompileUnit::constructSubprogramScopeDIE(const DISubprogram *Sub,
  812   DIE &ScopeDIE = updateSubprogramScopeDIE(Sub);
  820     if (DIE *ObjectPointer = createAndAddScopeChildren(Scope, ScopeDIE))
  833         DIE::get(DIEValueAllocator, dwarf::DW_TAG_unspecified_parameters));
  838 DIE *DwarfCompileUnit::createAndAddScopeChildren(LexicalScope *Scope,
  839                                                  DIE &ScopeDIE) {
  841   SmallVector<DIE *, 8> Children;
  842   DIE *ObjectPointer = createScopeChildrenDIE(Scope, Children);
  853   DIE *&AbsDef = getAbstractSPDies()[Scope->getScopeNode()];
  859   DIE *ContextDIE;
  886   if (DIE *ObjectPointer = ContextCU->createAndAddScopeChildren(Scope, *AbsDef))
  942 DIE &DwarfCompileUnit::constructCallSiteEntryDIE(
  943     DIE &ScopeDIE, const DISubprogram *CalleeSP, bool IsTail,
  946   DIE &CallSiteDIE = createAndAddDIE(getDwarf5OrGNUTag(dwarf::DW_TAG_call_site),
  954     DIE *CalleeDIE = getOrCreateSubprogramDIE(CalleeSP);
  978     DIE &CallSiteDIE, SmallVector<DbgCallSiteParam, 4> &Params) {
  982         DIE::get(DIEValueAllocator,
 1001 DIE *DwarfCompileUnit::constructImportedEntityDIE(
 1003   DIE *IMDie = DIE::get(DIEValueAllocator, (dwarf::Tag)Module->getTag());
 1003   DIE *IMDie = DIE::get(DIEValueAllocator, (dwarf::Tag)Module->getTag());
 1005   DIE *EntityDie;
 1030   DIE *D = getDIE(SP);
 1031   if (DIE *AbsSPDIE = getAbstractSPDies().lookup(SP)) {
 1046   auto *Die = Entity->getDIE();
 1123 void DwarfCompileUnit::addGlobalName(StringRef Name, const DIE &Die,
 1144 void DwarfCompileUnit::addGlobalType(const DIType *Ty, const DIE &Die,
 1164 void DwarfCompileUnit::addVariableAddress(const DbgVariable &DV, DIE &Die,
 1173 void DwarfCompileUnit::addAddress(DIE &Die, dwarf::Attribute Attribute,
 1194 void DwarfCompileUnit::addComplexAddress(const DbgVariable &DV, DIE &Die,
 1221 void DwarfCompileUnit::addLocationList(DIE &Die, dwarf::Attribute Attribute,
 1229                                                DIE &VariableDie) {
 1246                                             DIE &LabelDie) {
 1260 void DwarfCompileUnit::addAddressExpr(DIE &Die, dwarf::Attribute Attribute,
 1267     const DISubprogram *SP, DIE &SPDie) {
 1278 void DwarfCompileUnit::finishNonUnitTypeDIE(DIE& D, const DICompositeType *CTy) {
 1307     DIE &Die = getUnitDie().addChildFront(
 1308       DIE::get(DIEValueAllocator, dwarf::DW_TAG_base_type));
lib/CodeGen/AsmPrinter/DwarfCompileUnit.h
   50   DIE::value_iterator StmtListValue;
   67   StringMap<const DIE *> GlobalNames;
   70   StringMap<const DIE *> GlobalTypes;
   79   DenseMap<const MDNode *, DIE *> AbstractSPDies;
   87   DIE *constructVariableDIEImpl(const DbgVariable &DV, bool Abstract);
   91   DenseMap<const MDNode *, DIE *> &getAbstractSPDies() {
  103   void finishNonUnitTypeDIE(DIE& D, const DICompositeType *CTy) override;
  121   void applyStmtList(DIE &D);
  134     DIE *Die = nullptr;
  140   DIE *
  144   DIE *getOrCreateCommonBlock(const DICommonBlock *CB,
  147   void addLocationAttribute(DIE *ToDIE, const DIGlobalVariable *GV,
  152   void addLabelAddress(DIE &Die, dwarf::Attribute Attribute,
  157   void addLocalLabelAddress(DIE &Die, dwarf::Attribute Attribute,
  178   void attachLowHighPC(DIE &D, const MCSymbol *Begin, const MCSymbol *End);
  184   DIE &updateSubprogramScopeDIE(const DISubprogram *SP);
  187                          SmallVectorImpl<DIE *> &FinalChildren);
  191   void addScopeRangeList(DIE &ScopeDIE, SmallVector<RangeSpan, 2> Range);
  193   void attachRangesOrLowHighPC(DIE &D, SmallVector<RangeSpan, 2> Ranges);
  195   void attachRangesOrLowHighPC(DIE &D,
  200   DIE *constructInlinedScopeDIE(LexicalScope *Scope);
  204   DIE *constructLexicalScopeDIE(LexicalScope *Scope);
  207   DIE *constructVariableDIE(DbgVariable &DV, bool Abstract = false);
  209   DIE *constructVariableDIE(DbgVariable &DV, const LexicalScope &Scope,
  210                             DIE *&ObjectPointer);
  213   DIE *constructLabelDIE(DbgLabel &DL, const LexicalScope &Scope);
  216   DIE *createScopeChildrenDIE(LexicalScope *Scope,
  217                               SmallVectorImpl<DIE *> &Children,
  223   DIE &constructSubprogramScopeDIE(const DISubprogram *Sub,
  226   DIE *createAndAddScopeChildren(LexicalScope *Scope, DIE &ScopeDIE);
  226   DIE *createAndAddScopeChildren(LexicalScope *Scope, DIE &ScopeDIE);
  250   DIE &constructCallSiteEntryDIE(DIE &ScopeDIE, const DISubprogram *CalleeSP,
  250   DIE &constructCallSiteEntryDIE(DIE &ScopeDIE, const DISubprogram *CalleeSP,
  257   void constructCallSiteParmEntryDIEs(DIE &CallSiteDIE,
  261   DIE *constructImportedEntityDIE(const DIImportedEntity *Module);
  301   void addGlobalName(StringRef Name, const DIE &Die,
  308   void addGlobalType(const DIType *Ty, const DIE &Die,
  314   const StringMap<const DIE *> &getGlobalNames() const { return GlobalNames; }
  315   const StringMap<const DIE *> &getGlobalTypes() const { return GlobalTypes; }
  319   void addVariableAddress(const DbgVariable &DV, DIE &Die,
  322   void addAddress(DIE &Die, dwarf::Attribute Attribute,
  329   void addComplexAddress(const DbgVariable &DV, DIE &Die,
  334   void addLocationList(DIE &Die, dwarf::Attribute Attribute, unsigned Index);
  335   void applyVariableAttributes(const DbgVariable &Var, DIE &VariableDie);
  341   void addAddressExpr(DIE &Die, dwarf::Attribute Attribute, const MCExpr *Expr);
  344                                              DIE &SPDie);
  346   void applyLabelAttributes(const DbgLabel &Label, DIE &LabelDie);
lib/CodeGen/AsmPrinter/DwarfDebug.cpp
  452                                     const DISubprogram *SP, DIE &Die) {
  690                                             DwarfCompileUnit &CU, DIE &ScopeDIE,
  768       DIE &CallSiteDIE =
  784 void DwarfDebug::addGnuPubAttributes(DwarfCompileUnit &U, DIE &D) const {
  793   DIE &Die = NewCU.getUnitDie();
  895   if (DIE *D = TheCU.getOrCreateContextDIE(N->getScope()))
 1032     DIE *Die = Entity->getDIE();
 1878   DIE &ScopeDIE = TheCU.constructSubprogramScopeDIE(SP, FnScope);
 1989                                                         const DIE *Die) {
 2007     DIE &SpecDIE = SpecVal.getDIEEntry().getEntry();
 2074                                      const StringMap<const DIE *> &Globals) {
 2098     const DIE *Entity = GI.second;
 2781 void DwarfDebug::initSkeletonUnit(const DwarfUnit &U, DIE &Die,
 2877                                       StringRef Identifier, DIE &RefDie,
 2897   DIE &UnitDie = NewTU.getUnitDie();
 2985                                   const DIE &Die) {
 3011                               const DIE &Die) {
 3016                               const DIE &Die) {
 3023                                    const DIE &Die) {
 3028                               const DIE &Die, char Flags) {
lib/CodeGen/AsmPrinter/DwarfDebug.h
   72   DIE *TheDIE = nullptr;
   89   DIE *getDIE() const { return TheDIE; }
   93   void setDIE(DIE &D) { TheDIE = &D; }
  300   DenseMap<const DIE *, DwarfCompileUnit *> CUDieMap;
  442                                   DIE &ScopeDIE, const MachineFunction &MF);
  446                         StringRef Name, const DIE &Die);
  490                            const StringMap<const DIE *> &Globals);
  517   void initSkeletonUnit(const DwarfUnit &U, DIE &Die,
  549   void addGnuPubAttributes(DwarfCompileUnit &U, DIE &D) const;
  621                             DIE &Die, const DICompositeType *CTy);
  720                           DIE &Die);
  724   void addAccelName(const DICompileUnit &CU, StringRef Name, const DIE &Die);
  726   void addAccelObjC(const DICompileUnit &CU, StringRef Name, const DIE &Die);
  729                          const DIE &Die);
  731   void addAccelType(const DICompileUnit &CU, StringRef Name, const DIE &Die,
  741   DwarfCompileUnit *lookupCU(const DIE *Die) { return CUDieMap.lookup(Die); }
  742   const DwarfCompileUnit *lookupCU(const DIE *Die) const {
lib/CodeGen/AsmPrinter/DwarfFile.cpp
   92 unsigned DwarfFile::computeSizeAndOffset(DIE &Die, unsigned Offset) {
lib/CodeGen/AsmPrinter/DwarfFile.h
   98   DenseMap<const MDNode *, DIE *> AbstractSPDies;
  104   DenseMap<const MDNode *, DIE *> DITypeNodeToDieMap;
  122   unsigned computeSizeAndOffset(DIE &Die, unsigned Offset);
  173   DenseMap<const MDNode *, DIE *> &getAbstractSPDies() {
  181   void insertDIE(const MDNode *TypeMD, DIE *Die) {
  185   DIE *getDIE(const MDNode *TypeMD) {
lib/CodeGen/AsmPrinter/DwarfUnit.cpp
  205 DIE *DwarfUnit::getDIE(const DINode *D) const {
  211 void DwarfUnit::insertDIE(const DINode *Desc, DIE *D) {
  219 void DwarfUnit::insertDIE(DIE *D) {
  223 void DwarfUnit::addFlag(DIE &Die, dwarf::Attribute Attribute) {
  258 void DwarfUnit::addString(DIE &Die, dwarf::Attribute Attribute,
  303 void DwarfUnit::addSectionOffset(DIE &Die, dwarf::Attribute Attribute,
  360 void DwarfUnit::addLabelDelta(DIE &Die, dwarf::Attribute Attribute,
  366 void DwarfUnit::addDIEEntry(DIE &Die, dwarf::Attribute Attribute, DIE &Entry) {
  366 void DwarfUnit::addDIEEntry(DIE &Die, dwarf::Attribute Attribute, DIE &Entry) {
  370 void DwarfUnit::addDIETypeSignature(DIE &Die, uint64_t Signature) {
  381 void DwarfUnit::addDIEEntry(DIE &Die, dwarf::Attribute Attribute,
  395 DIE &DwarfUnit::createAndAddDIE(unsigned Tag, DIE &Parent, const DINode *N) {
  395 DIE &DwarfUnit::createAndAddDIE(unsigned Tag, DIE &Parent, const DINode *N) {
  396   DIE &Die = Parent.addChild(DIE::get(DIEValueAllocator, (dwarf::Tag)Tag));
  396   DIE &Die = Parent.addChild(DIE::get(DIEValueAllocator, (dwarf::Tag)Tag));
  402 void DwarfUnit::addBlock(DIE &Die, dwarf::Attribute Attribute, DIELoc *Loc) {
  409 void DwarfUnit::addBlock(DIE &Die, dwarf::Attribute Attribute,
  416 void DwarfUnit::addSourceLine(DIE &Die, unsigned Line, const DIFile *File) {
  425 void DwarfUnit::addSourceLine(DIE &Die, const DILocalVariable *V) {
  431 void DwarfUnit::addSourceLine(DIE &Die, const DIGlobalVariable *G) {
  437 void DwarfUnit::addSourceLine(DIE &Die, const DISubprogram *SP) {
  443 void DwarfUnit::addSourceLine(DIE &Die, const DILabel *L) {
  449 void DwarfUnit::addSourceLine(DIE &Die, const DIType *Ty) {
  455 void DwarfUnit::addSourceLine(DIE &Die, const DIObjCProperty *Ty) {
  510 void DwarfUnit::addConstantFPValue(DIE &Die, const MachineOperand &MO) {
  532 void DwarfUnit::addConstantFPValue(DIE &Die, const ConstantFP *CFP) {
  537 void DwarfUnit::addConstantValue(DIE &Die, const ConstantInt *CI,
  542 void DwarfUnit::addConstantValue(DIE &Die, const MachineOperand &MO,
  549 void DwarfUnit::addConstantValue(DIE &Die, uint64_t Val, const DIType *Ty) {
  553 void DwarfUnit::addConstantValue(DIE &Die, bool Unsigned, uint64_t Val) {
  560 void DwarfUnit::addConstantValue(DIE &Die, const APInt &Val, const DIType *Ty) {
  564 void DwarfUnit::addConstantValue(DIE &Die, const APInt &Val, bool Unsigned) {
  593 void DwarfUnit::addLinkageName(DIE &Die, StringRef LinkageName) {
  601 void DwarfUnit::addTemplateParams(DIE &Buffer, DINodeArray TParams) {
  612 void DwarfUnit::addThrownTypes(DIE &Die, DINodeArray ThrownTypes) {
  614     DIE &TT = createAndAddDIE(dwarf::DW_TAG_thrown_type, Die);
  619 DIE *DwarfUnit::getOrCreateContextDIE(const DIScope *Context) {
  633 DIE *DwarfUnit::createTypeDIE(const DICompositeType *Ty) {
  635   DIE *ContextDIE = getOrCreateContextDIE(Context);
  637   if (DIE *TyDIE = getDIE(Ty))
  641   DIE &TyDIE = createAndAddDIE(Ty->getTag(), *ContextDIE, Ty);
  649 DIE *DwarfUnit::createTypeDIE(const DIScope *Context, DIE &ContextDIE,
  649 DIE *DwarfUnit::createTypeDIE(const DIScope *Context, DIE &ContextDIE,
  652   DIE &TyDIE = createAndAddDIE(Ty->getTag(), ContextDIE, Ty);
  680 DIE *DwarfUnit::getOrCreateTypeDIE(const MDNode *TyNode) {
  697   DIE *ContextDIE = getOrCreateContextDIE(Context);
  700   if (DIE *TyDIE = getDIE(Ty))
  708                                         const DIType *Ty, const DIE &TyDIE) {
  725 void DwarfUnit::addType(DIE &Entity, const DIType *Ty,
  765 void DwarfUnit::constructTypeDIE(DIE &Buffer, const DIBasicType *BTy) {
  788 void DwarfUnit::constructTypeDIE(DIE &Buffer, const DIDerivedType *DTy) {
  825 void DwarfUnit::constructSubprogramArguments(DIE &Buffer, DITypeRefArray Args) {
  832       DIE &Arg = createAndAddDIE(dwarf::DW_TAG_formal_parameter, Buffer);
  840 void DwarfUnit::constructTypeDIE(DIE &Buffer, const DISubroutineType *CTy) {
  873 void DwarfUnit::constructTypeDIE(DIE &Buffer, const DICompositeType *CTy) {
  900         DIE &DiscMember = constructMemberDIE(Buffer, Discriminator);
  914           DIE &ElemDie = createAndAddDIE(dwarf::DW_TAG_friend, Buffer);
  921           DIE &Variant = createAndAddDIE(dwarf::DW_TAG_variant, Buffer);
  934         DIE &ElemDie = createAndAddDIE(Property->getTag(), Buffer);
  951           DIE &VariantPart = createAndAddDIE(Composite->getTag(), Buffer);
 1032     DIE &Buffer, const DITemplateTypeParameter *TP) {
 1033   DIE &ParamDIE =
 1043     DIE &Buffer, const DITemplateValueParameter *VP) {
 1044   DIE &ParamDIE = createAndAddDIE(VP->getTag(), Buffer);
 1078 DIE *DwarfUnit::getOrCreateNameSpace(const DINamespace *NS) {
 1081   DIE *ContextDIE = getOrCreateContextDIE(NS->getScope());
 1083   if (DIE *NDie = getDIE(NS))
 1085   DIE &NDie = createAndAddDIE(dwarf::DW_TAG_namespace, *ContextDIE, NS);
 1099 DIE *DwarfUnit::getOrCreateModule(const DIModule *M) {
 1102   DIE *ContextDIE = getOrCreateContextDIE(M->getScope());
 1104   if (DIE *MDie = getDIE(M))
 1106   DIE &MDie = createAndAddDIE(dwarf::DW_TAG_module, *ContextDIE, M);
 1123 DIE *DwarfUnit::getOrCreateSubprogramDIE(const DISubprogram *SP, bool Minimal) {
 1127   DIE *ContextDIE =
 1130   if (DIE *SPDie = getDIE(SP))
 1143   DIE &SPDie = createAndAddDIE(dwarf::DW_TAG_subprogram, *ContextDIE, SP);
 1156                                                     DIE &SPDie) {
 1157   DIE *DeclDie = nullptr;
 1198 void DwarfUnit::applySubprogramAttributes(const DISubprogram *SP, DIE &SPDie,
 1312 void DwarfUnit::constructSubrangeDIE(DIE &Buffer, const DISubrange *SR,
 1313                                      DIE *IndexTy) {
 1314   DIE &DW_Subrange = createAndAddDIE(dwarf::DW_TAG_subrange_type, Buffer);
 1331     if (auto *CountVarDIE = getDIE(CV))
 1337 DIE *DwarfUnit::getIndexTyDie() {
 1378 void DwarfUnit::constructArrayTypeDIE(DIE &Buffer, const DICompositeType *CTy) {
 1392   DIE *IdxTy = getIndexTyDie();
 1404 void DwarfUnit::constructEnumTypeDIE(DIE &Buffer, const DICompositeType *CTy) {
 1423       DIE &Enumerator = createAndAddDIE(dwarf::DW_TAG_enumerator, Buffer);
 1437     DIE &SPDie = *CI->first;
 1441     DIE *NDie = getDIE(D);
 1448 DIE &DwarfUnit::constructMemberDIE(DIE &Buffer, const DIDerivedType *DT) {
 1448 DIE &DwarfUnit::constructMemberDIE(DIE &Buffer, const DIDerivedType *DT) {
 1449   DIE &MemberDie = createAndAddDIE(DT->getTag(), Buffer);
 1547     if (DIE *PDie = getDIE(PNode))
 1557 DIE *DwarfUnit::getOrCreateStaticMemberDIE(const DIDerivedType *DT) {
 1563   DIE *ContextDIE = getOrCreateContextDIE(DT->getScope());
 1567   if (DIE *StaticMemberDIE = getDIE(DT))
 1570   DIE &StaticMemberDIE = createAndAddDIE(DT->getTag(), *ContextDIE, DT);
 1657 DIE::value_iterator
 1658 DwarfUnit::addSectionDelta(DIE &Die, dwarf::Attribute Attribute,
 1666 DIE::value_iterator
 1667 DwarfUnit::addSectionLabel(DIE &Die, dwarf::Attribute Attribute,
 1683 void DwarfTypeUnit::addGlobalName(StringRef Name, const DIE &Die,
 1688 void DwarfTypeUnit::addGlobalType(const DIType *Ty, const DIE &Die,
 1717 void DwarfTypeUnit::finishNonUnitTypeDIE(DIE& D, const DICompositeType *CTy) {
lib/CodeGen/AsmPrinter/DwarfUnit.h
   59   DIE *IndexTyDie;
   63   DenseMap<const MDNode *, DIE *> MDNodeToDieMap;
   74   DenseMap<DIE *, const DINode *> ContainingTypeMap;
   79   bool applySubprogramDefinitionAttributes(const DISubprogram *SP, DIE &SPDie);
  106   virtual void addGlobalName(StringRef Name, const DIE &Die,
  110   virtual void addGlobalType(const DIType *Ty, const DIE &Die,
  118   DIE *getDIE(const DINode *D) const;
  128   void insertDIE(const DINode *Desc, DIE *D);
  130   void insertDIE(DIE *D);
  133   void addFlag(DIE &Die, dwarf::Attribute Attribute);
  153   void addString(DIE &Die, dwarf::Attribute Attribute, StringRef Str);
  164   void addSectionOffset(DIE &Die, dwarf::Attribute Attribute, uint64_t Integer);
  171   void addLabelDelta(DIE &Die, dwarf::Attribute Attribute, const MCSymbol *Hi,
  175   void addDIEEntry(DIE &Die, dwarf::Attribute Attribute, DIE &Entry);
  175   void addDIEEntry(DIE &Die, dwarf::Attribute Attribute, DIE &Entry);
  178   void addDIEEntry(DIE &Die, dwarf::Attribute Attribute, DIEEntry Entry);
  181   void addDIETypeSignature(DIE &Die, uint64_t Signature);
  184   void addBlock(DIE &Die, dwarf::Attribute Attribute, DIELoc *Loc);
  187   void addBlock(DIE &Die, dwarf::Attribute Attribute, DIEBlock *Block);
  190   void addSourceLine(DIE &Die, unsigned Line, const DIFile *File);
  191   void addSourceLine(DIE &Die, const DILocalVariable *V);
  192   void addSourceLine(DIE &Die, const DIGlobalVariable *G);
  193   void addSourceLine(DIE &Die, const DISubprogram *SP);
  194   void addSourceLine(DIE &Die, const DILabel *L);
  195   void addSourceLine(DIE &Die, const DIType *Ty);
  196   void addSourceLine(DIE &Die, const DIObjCProperty *Ty);
  199   void addConstantValue(DIE &Die, const MachineOperand &MO, const DIType *Ty);
  200   void addConstantValue(DIE &Die, const ConstantInt *CI, const DIType *Ty);
  201   void addConstantValue(DIE &Die, const APInt &Val, const DIType *Ty);
  202   void addConstantValue(DIE &Die, const APInt &Val, bool Unsigned);
  203   void addConstantValue(DIE &Die, uint64_t Val, const DIType *Ty);
  204   void addConstantValue(DIE &Die, bool Unsigned, uint64_t Val);
  207   void addConstantFPValue(DIE &Die, const MachineOperand &MO);
  208   void addConstantFPValue(DIE &Die, const ConstantFP *CFP);
  211   void addLinkageName(DIE &Die, StringRef LinkageName);
  214   void addTemplateParams(DIE &Buffer, DINodeArray TParams);
  217   void addThrownTypes(DIE &Die, DINodeArray ThrownTypes);
  223   void addType(DIE &Entity, const DIType *Ty,
  226   DIE *getOrCreateNameSpace(const DINamespace *NS);
  227   DIE *getOrCreateModule(const DIModule *M);
  228   DIE *getOrCreateSubprogramDIE(const DISubprogram *SP, bool Minimal = false);
  230   void applySubprogramAttributes(const DISubprogram *SP, DIE &SPDie,
  234   DIE *createTypeDIE(const DIScope *Context, DIE &ContextDIE, const DIType *Ty);
  234   DIE *createTypeDIE(const DIScope *Context, DIE &ContextDIE, const DIType *Ty);
  237   DIE *getOrCreateTypeDIE(const MDNode *TyNode);
  240   DIE *getOrCreateContextDIE(const DIScope *Context);
  246   void constructSubprogramArguments(DIE &Buffer, DITypeRefArray Args);
  250   DIE &createAndAddDIE(unsigned Tag, DIE &Parent, const DINode *N = nullptr);
  250   DIE &createAndAddDIE(unsigned Tag, DIE &Parent, const DINode *N = nullptr);
  277   void constructTypeDIE(DIE &Buffer, const DICompositeType *CTy);
  280   DIE::value_iterator addSectionDelta(DIE &Die, dwarf::Attribute Attribute,
  280   DIE::value_iterator addSectionDelta(DIE &Die, dwarf::Attribute Attribute,
  284   DIE::value_iterator addSectionLabel(DIE &Die, dwarf::Attribute Attribute,
  284   DIE::value_iterator addSectionLabel(DIE &Die, dwarf::Attribute Attribute,
  293   DIE *createTypeDIE(const DICompositeType *Ty);
  299   DIE *getOrCreateStaticMemberDIE(const DIDerivedType *DT);
  309   void constructTypeDIE(DIE &Buffer, const DIBasicType *BTy);
  310   void constructTypeDIE(DIE &Buffer, const DIDerivedType *DTy);
  311   void constructTypeDIE(DIE &Buffer, const DISubroutineType *CTy);
  312   void constructSubrangeDIE(DIE &Buffer, const DISubrange *SR, DIE *IndexTy);
  312   void constructSubrangeDIE(DIE &Buffer, const DISubrange *SR, DIE *IndexTy);
  313   void constructArrayTypeDIE(DIE &Buffer, const DICompositeType *CTy);
  314   void constructEnumTypeDIE(DIE &Buffer, const DICompositeType *CTy);
  315   DIE &constructMemberDIE(DIE &Buffer, const DIDerivedType *DT);
  315   DIE &constructMemberDIE(DIE &Buffer, const DIDerivedType *DT);
  316   void constructTemplateTypeParameterDIE(DIE &Buffer,
  318   void constructTemplateValueParameterDIE(DIE &Buffer,
  327   DIE *getIndexTyDie();
  330   void setIndexTyDie(DIE *D) { IndexTyDie = D; }
  332   virtual void finishNonUnitTypeDIE(DIE& D, const DICompositeType *CTy) = 0;
  337                                const DIE &TyDIE);
  345   const DIE *Ty;
  351   void finishNonUnitTypeDIE(DIE& D, const DICompositeType *CTy) override;
  359   void setType(const DIE *Ty) { this->Ty = Ty; }
  367   void addGlobalName(StringRef Name, const DIE &Die,
  369   void addGlobalType(const DIType *Ty, const DIE &Die,
tools/dsymutil/CompileUnit.cpp
   76 void CompileUnit::noteForwardReference(DIE *Die, const CompileUnit *RefUnit,
   83     DIE *RefDie;
  110 void CompileUnit::noteRangeAttribute(const DIE &Die, PatchLocation Attr) {
  121 void CompileUnit::addNamespaceAccelerator(const DIE *Die,
  126 void CompileUnit::addObjCAccelerator(const DIE *Die,
  132 void CompileUnit::addNameAccelerator(const DIE *Die,
  138 void CompileUnit::addTypeAccelerator(const DIE *Die,
tools/dsymutil/CompileUnit.h
   30   DIE::value_iterator I;
   33   PatchLocation(DIE::value_iterator I) : I(I) {}
   61     DIE *Clone;
  109   DIE *getOutputUnitDIE() const {
  164   void noteForwardReference(DIE *Die, const CompileUnit *RefUnit,
  179   void noteRangeAttribute(const DIE &Die, PatchLocation Attr);
  186   void addNamespaceAccelerator(const DIE *Die, DwarfStringPoolEntryRef Name);
  189   void addNameAccelerator(const DIE *Die, DwarfStringPoolEntryRef Name,
  195   void addObjCAccelerator(const DIE *Die, DwarfStringPoolEntryRef Name,
  200   void addTypeAccelerator(const DIE *Die, DwarfStringPoolEntryRef Name,
  209     const DIE *Die;
  220     AccelInfo(DwarfStringPoolEntryRef Name, const DIE *Die,
  224     AccelInfo(DwarfStringPoolEntryRef Name, const DIE *Die,
  274       std::tuple<DIE *, const CompileUnit *, DeclContext *, PatchLocation>>
tools/dsymutil/DwarfLinker.cpp
 1015     DIE &Die, AttributeSpec AttrSpec, const DWARFFormValue &Val,
 1035     DIE &Die, const DWARFDie &InputDIE, AttributeSpec AttrSpec,
 1040   DIE *NewRefDie = nullptr;
 1070     RefInfo.Clone = DIE::get(DIEAlloc, dwarf::Tag(RefDie.getTag()));
 1141       if (DIE *Clone = Info.Clone)
 1166     DIE &Die, const DebugMapObject &DMO, CompileUnit &Unit,
 1224     DIE &Die, AttributeSpec AttrSpec, const DWARFFormValue &Val,
 1272     DIE &Die, const DWARFDie &InputDIE, const DebugMapObject &DMO,
 1340     DIE &Die, const DWARFDie &InputDIE, const DebugMapObject &DMO,
 1436                                                 const DIE *Die,
 1501 DIE *DwarfLinker::DIECloner::cloneDIE(
 1504     unsigned Flags, bool IsLittleEndian, DIE *Die) {
 1519       Info.Clone = DIE::get(DIEAlloc, dwarf::Tag(InputDIE.getTag()));
 1684     if (DIE *Clone = cloneDIE(Child, DMO, Unit, StringPool, PCOffset, OutOffset,
 1795 static void patchStmtList(DIE &Die, DIEInteger Offset) {
 1818   if (auto *OutputDIE = Unit.getOutputUnitDIE())
 2454   DIE *CUDie = DIE::get(DIEAlloc, dwarf::DW_TAG_compile_unit);
 2454   DIE *CUDie = DIE::get(DIEAlloc, dwarf::DW_TAG_compile_unit);
 2470     DIE &ConstDie = CUDie->addChild(DIE::get(DIEAlloc, dwarf::DW_TAG_constant));
 2470     DIE &ConstDie = CUDie->addChild(DIE::get(DIEAlloc, dwarf::DW_TAG_constant));
 2487   for (auto &Child : CUDie->children()) {
tools/dsymutil/DwarfLinker.h
  289     DIE *cloneDIE(const DWARFDie &InputDIE, const DebugMapObject &DMO,
  292                   bool IsLittleEndian, DIE *Die = nullptr);
  337     unsigned cloneAttribute(DIE &Die, const DWARFDie &InputDIE,
  347     unsigned cloneStringAttribute(DIE &Die, AttributeSpec AttrSpec,
  355     unsigned cloneDieReferenceAttribute(DIE &Die, const DWARFDie &InputDIE,
  370     unsigned cloneBlockAttribute(DIE &Die, const DebugMapObject &DMO,
  378     unsigned cloneAddressAttribute(DIE &Die, AttributeSpec AttrSpec,
  385     unsigned cloneScalarAttribute(DIE &Die, const DWARFDie &InputDIE,
  406     void addObjCAccelerator(CompileUnit &Unit, const DIE *Die,
tools/dsymutil/DwarfStreamer.cpp
  188 void DwarfStreamer::emitDIE(DIE &Die) {
tools/dsymutil/DwarfStreamer.h
   68   void emitDIE(DIE &Die);
unittests/CodeGen/DIEHashTest.cpp
   40   DIE &Die = *DIE::get(Alloc, dwarf::DW_TAG_base_type);
   40   DIE &Die = *DIE::get(Alloc, dwarf::DW_TAG_base_type);
   49   DIE &Unnamed = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
   49   DIE &Unnamed = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
   64   DIE &Foo = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
   64   DIE &Foo = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
   78   DIE &CU = *DIE::get(Alloc, dwarf::DW_TAG_compile_unit);
   78   DIE &CU = *DIE::get(Alloc, dwarf::DW_TAG_compile_unit);
   80   auto Space = DIE::get(Alloc, dwarf::DW_TAG_namespace);
   89   auto Foo = DIE::get(Alloc, dwarf::DW_TAG_structure_type);
   94   DIE &N = *Foo;
  106   DIE &Unnamed = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
  106   DIE &Unnamed = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
  110   DIE &Int = *DIE::get(Alloc, dwarf::DW_TAG_base_type);
  110   DIE &Int = *DIE::get(Alloc, dwarf::DW_TAG_base_type);
  119   auto Member = DIE::get(Alloc, dwarf::DW_TAG_member);
  136   DIE &Unnamed = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
  136   DIE &Unnamed = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
  141   DIE &Int = *DIE::get(Alloc, dwarf::DW_TAG_base_type);
  141   DIE &Int = *DIE::get(Alloc, dwarf::DW_TAG_base_type);
  150   auto Mem1 = DIE::get(Alloc, dwarf::DW_TAG_member);
  160   auto Mem2 = DIE::get(Alloc, dwarf::DW_TAG_member);
  176   DIE &Foo = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
  176   DIE &Foo = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
  182   auto Mem = DIE::get(Alloc, dwarf::DW_TAG_member);
  198   DIE &Foo = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
  198   DIE &Foo = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
  204   auto Mem = DIE::get(Alloc, dwarf::DW_TAG_member);
  211   DIE &FooPtr = *DIE::get(Alloc, dwarf::DW_TAG_pointer_type);
  211   DIE &FooPtr = *DIE::get(Alloc, dwarf::DW_TAG_pointer_type);
  228   DIE &Foo = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
  228   DIE &Foo = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
  234   auto Mem = DIE::get(Alloc, dwarf::DW_TAG_member);
  241   DIE &FooRef = *DIE::get(Alloc, dwarf::DW_TAG_reference_type);
  241   DIE &FooRef = *DIE::get(Alloc, dwarf::DW_TAG_reference_type);
  246   DIE &FooRefConst = *DIE::get(Alloc, dwarf::DW_TAG_const_type);
  246   DIE &FooRefConst = *DIE::get(Alloc, dwarf::DW_TAG_const_type);
  263   DIE &Foo = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
  263   DIE &Foo = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
  269   auto Mem = DIE::get(Alloc, dwarf::DW_TAG_member);
  276   DIE &FooRef = *DIE::get(Alloc, dwarf::DW_TAG_rvalue_reference_type);
  276   DIE &FooRef = *DIE::get(Alloc, dwarf::DW_TAG_rvalue_reference_type);
  281   DIE &FooRefConst = *DIE::get(Alloc, dwarf::DW_TAG_const_type);
  281   DIE &FooRefConst = *DIE::get(Alloc, dwarf::DW_TAG_const_type);
  298   DIE &Foo = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
  298   DIE &Foo = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
  304   auto Mem = DIE::get(Alloc, dwarf::DW_TAG_member);
  311   DIE &PtrToFooMem = *DIE::get(Alloc, dwarf::DW_TAG_ptr_to_member_type);
  311   DIE &PtrToFooMem = *DIE::get(Alloc, dwarf::DW_TAG_ptr_to_member_type);
  341     DIE &Bar = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
  341     DIE &Bar = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
  346     DIE &Foo = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
  346     DIE &Foo = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
  350     auto Mem = DIE::get(Alloc, dwarf::DW_TAG_member);
  355     DIE &PtrToFooMem = *DIE::get(Alloc, dwarf::DW_TAG_ptr_to_member_type);
  355     DIE &PtrToFooMem = *DIE::get(Alloc, dwarf::DW_TAG_ptr_to_member_type);
  373     DIE &Bar = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
  373     DIE &Bar = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
  377     DIE &Foo = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
  377     DIE &Foo = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
  381     auto Mem = DIE::get(Alloc, dwarf::DW_TAG_member);
  386     DIE &PtrToFooMem = *DIE::get(Alloc, dwarf::DW_TAG_ptr_to_member_type);
  386     DIE &PtrToFooMem = *DIE::get(Alloc, dwarf::DW_TAG_ptr_to_member_type);
  419     DIE &Bar = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
  419     DIE &Bar = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
  424     DIE &Foo = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
  424     DIE &Foo = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
  428     auto Mem = DIE::get(Alloc, dwarf::DW_TAG_member);
  433     DIE &PtrToFooMem = *DIE::get(Alloc, dwarf::DW_TAG_ptr_to_member_type);
  433     DIE &PtrToFooMem = *DIE::get(Alloc, dwarf::DW_TAG_ptr_to_member_type);
  450     DIE &Bar = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
  450     DIE &Bar = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
  454     DIE &Foo = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
  454     DIE &Foo = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
  458     auto Mem = DIE::get(Alloc, dwarf::DW_TAG_member);
  463     DIE &PtrToFooMem = *DIE::get(Alloc, dwarf::DW_TAG_ptr_to_member_type);
  463     DIE &PtrToFooMem = *DIE::get(Alloc, dwarf::DW_TAG_ptr_to_member_type);
  495   DIE &Unnamed = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
  495   DIE &Unnamed = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
  498   DIE &Foo = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
  498   DIE &Foo = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
  502   auto Mem = DIE::get(Alloc, dwarf::DW_TAG_member);
  507   DIE &UnnamedPtr = *DIE::get(Alloc, dwarf::DW_TAG_pointer_type);
  507   DIE &UnnamedPtr = *DIE::get(Alloc, dwarf::DW_TAG_pointer_type);
  526   DIE &Unnamed = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
  526   DIE &Unnamed = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
  530   auto Foo = DIE::get(Alloc, dwarf::DW_TAG_structure_type);
  545   DIE &Unnamed = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
  545   DIE &Unnamed = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
  549   auto Func = DIE::get(Alloc, dwarf::DW_TAG_subprogram);
  565   DIE &A = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
  565   DIE &A = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
  573   auto Func = DIE::get(Alloc, dwarf::DW_TAG_subprogram);
  601   DIE &A = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
  601   DIE &A = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
  612   DIE &IntTyDIE = *DIE::get(Alloc, dwarf::DW_TAG_base_type);
  612   DIE &IntTyDIE = *DIE::get(Alloc, dwarf::DW_TAG_base_type);
  618   auto PITyDIE = DIE::get(Alloc, dwarf::DW_TAG_const_type);
  622   auto PI = DIE::get(Alloc, dwarf::DW_TAG_member);
  647   DIE &A = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
  647   DIE &A = *DIE::get(Alloc, dwarf::DW_TAG_structure_type);
  657   auto FloatTyDIE = DIE::get(Alloc, dwarf::DW_TAG_base_type);
  664   auto PITyDIE = DIE::get(Alloc, dwarf::DW_TAG_const_type);
  668   auto PI = DIE::get(Alloc, dwarf::DW_TAG_member);
unittests/DebugInfo/DWARF/DwarfGenerator.cpp
  144                        &Die->addChild(llvm::DIE::get(DG.getAllocator(), Tag)));
unittests/DebugInfo/DWARF/DwarfGenerator.h
   59   llvm::DIE *Die;
   65   DIE(CompileUnit *U = nullptr, llvm::DIE *D = nullptr) : CU(U), Die(D) {}
usr/include/c++/7.4.0/bits/move.h
   72     constexpr _Tp&&
   83     constexpr _Tp&&
usr/include/c++/7.4.0/bits/stl_iterator_base_types.h
  123       typedef _Tp        value_type;
usr/include/c++/7.4.0/type_traits
 1983     { typedef _Up     type; };