From 20b39c653c3db539a728cd67faf7b6026619e4e2 Mon Sep 17 00:00:00 2001 From: "Duncan P. N. Exon Smith" Date: Sat, 18 Apr 2015 00:35:36 +0000 Subject: [PATCH] DebugInfo: Delete DIDescriptor (but not its subclasses) Delete `DIDescriptor` and update the remaining users. I'll follow-up by deleting subclasses in manageable groups (top-down). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@235248 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/IR/DebugInfo.h | 27 --------------------- lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp | 9 +++---- lib/CodeGen/AsmPrinter/DwarfUnit.cpp | 19 ++++++--------- lib/CodeGen/AsmPrinter/DwarfUnit.h | 9 +++---- tools/opt/BreakpointPrinter.cpp | 4 +-- 5 files changed, 18 insertions(+), 50 deletions(-) diff --git a/include/llvm/IR/DebugInfo.h b/include/llvm/IR/DebugInfo.h index 6e816590cd7..eede59d725d 100644 --- a/include/llvm/IR/DebugInfo.h +++ b/include/llvm/IR/DebugInfo.h @@ -58,22 +58,10 @@ class DIObjCProperty; /// \brief Maps from type identifier to the actual MDNode. typedef DenseMap DITypeIdentifierMap; -class DIDescriptor { - MDNode *N; - -public: - DIDescriptor(const MDNode *N = nullptr) : N(const_cast(N)) {} - - operator MDNode *() const { return N; } - MDNode *operator->() const { return N; } - MDNode &operator*() const { return *N; } -}; - #define DECLARE_SIMPLIFY_DESCRIPTOR(DESC) \ class DESC; \ template <> struct simplify_type; \ template <> struct simplify_type; -DECLARE_SIMPLIFY_DESCRIPTOR(DIDescriptor) DECLARE_SIMPLIFY_DESCRIPTOR(DISubrange) DECLARE_SIMPLIFY_DESCRIPTOR(DIEnumerator) DECLARE_SIMPLIFY_DESCRIPTOR(DIScope) @@ -133,7 +121,6 @@ class DIScope { public: DIScope(const MDScope *N = nullptr) : N(const_cast(N)) {} - operator DIDescriptor() const { return N; } operator MDScope *() const { return N; } MDScope *operator->() const { return N; } MDScope &operator*() const { return *N; } @@ -145,7 +132,6 @@ class DIType { public: DIType(const MDType *N = nullptr) : N(const_cast(N)) {} - operator DIDescriptor() const { return N; } operator DIScope() const { return N; } operator MDType *() const { return N; } MDType *operator->() const { return N; } @@ -159,7 +145,6 @@ public: DIBasicType(const MDBasicType *N = nullptr) : N(const_cast(N)) {} - operator DIDescriptor() const { return N; } operator DIType() const { return N; } operator MDBasicType *() const { return N; } MDBasicType *operator->() const { return N; } @@ -173,7 +158,6 @@ public: DIDerivedType(const MDDerivedTypeBase *N = nullptr) : N(const_cast(N)) {} - operator DIDescriptor() const { return N; } operator DIType() const { return N; } operator MDDerivedTypeBase *() const { return N; } MDDerivedTypeBase *operator->() const { return N; } @@ -187,7 +171,6 @@ public: DICompositeType(const MDCompositeTypeBase *N = nullptr) : N(const_cast(N)) {} - operator DIDescriptor() const { return N; } operator DIType() const { return N; } operator MDCompositeTypeBase *() const { return N; } MDCompositeTypeBase *operator->() const { return N; } @@ -201,7 +184,6 @@ public: DISubroutineType(const MDSubroutineType *N = nullptr) : N(const_cast(N)) {} - operator DIDescriptor() const { return N; } operator DIType() const { return N; } operator DICompositeType() const { return N; } operator MDSubroutineType *() const { return N; } @@ -215,7 +197,6 @@ class DIFile { public: DIFile(const MDFile *N = nullptr) : N(const_cast(N)) {} - operator DIDescriptor() const { return N; } operator DIScope() const { return N; } operator MDFile *() const { return N; } MDFile *operator->() const { return N; } @@ -229,7 +210,6 @@ public: DICompileUnit(const MDCompileUnit *N = nullptr) : N(const_cast(N)) {} - operator DIDescriptor() const { return N; } operator DIScope() const { return N; } operator MDCompileUnit *() const { return N; } MDCompileUnit *operator->() const { return N; } @@ -243,7 +223,6 @@ public: DISubprogram(const MDSubprogram *N = nullptr) : N(const_cast(N)) {} - operator DIDescriptor() const { return N; } operator DIScope() const { return N; } operator MDSubprogram *() const { return N; } MDSubprogram *operator->() const { return N; } @@ -257,7 +236,6 @@ public: DILexicalBlock(const MDLexicalBlockBase *N = nullptr) : N(const_cast(N)) {} - operator DIDescriptor() const { return N; } operator MDLexicalBlockBase *() const { return N; } MDLexicalBlockBase *operator->() const { return N; } MDLexicalBlockBase &operator*() const { return *N; } @@ -270,7 +248,6 @@ public: DILexicalBlockFile(const MDLexicalBlockFile *N = nullptr) : N(const_cast(N)) {} - operator DIDescriptor() const { return N; } operator MDLexicalBlockFile *() const { return N; } MDLexicalBlockFile *operator->() const { return N; } MDLexicalBlockFile &operator*() const { return *N; } @@ -283,7 +260,6 @@ public: DINameSpace(const MDNamespace *N = nullptr) : N(const_cast(N)) {} - operator DIDescriptor() const { return N; } operator DIScope() const { return N; } operator MDNamespace *() const { return N; } MDNamespace *operator->() const { return N; } @@ -321,7 +297,6 @@ public: DIGlobalVariable(const MDGlobalVariable *N = nullptr) : N(const_cast(N)) {} - operator DIDescriptor() const { return N; } operator MDGlobalVariable *() const { return N; } MDGlobalVariable *operator->() const { return N; } MDGlobalVariable &operator*() const { return *N; } @@ -381,7 +356,6 @@ public: DIImportedEntity(const MDImportedEntity *N = nullptr) : N(const_cast(N)) {} - operator DIDescriptor() const { return N; } operator MDImportedEntity *() const { return N; } MDImportedEntity *operator->() const { return N; } MDImportedEntity &operator*() const { return *N; } @@ -393,7 +367,6 @@ public: static SimpleType getSimplifiedValue(const DESC &DI) { return DI; } \ }; \ template <> struct simplify_type : simplify_type {}; -SIMPLIFY_DESCRIPTOR(DIDescriptor) SIMPLIFY_DESCRIPTOR(DISubrange) SIMPLIFY_DESCRIPTOR(DIEnumerator) SIMPLIFY_DESCRIPTOR(DIScope) diff --git a/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp b/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp index c4409aa78a3..c7e853fa988 100644 --- a/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp @@ -612,8 +612,8 @@ DwarfCompileUnit::constructAbstractSubprogramScopeDIE(LexicalScope *Scope) { if (includeMinimalInlineScopes()) ContextDIE = &getUnitDie(); // Some of this is duplicated from DwarfUnit::getOrCreateSubprogramDIE, with - // the important distinction that the DIDescriptor is not associated with the - // DIE (since the DIDescriptor will be associated with the concrete DIE, if + // the important distinction that the debug node is not associated with the + // DIE (since the debug node will be associated with the concrete DIE, if // any). It could be refactored to some common utility function. else if (auto *SPDecl = SP->getDeclaration()) { ContextDIE = &getUnitDie(); @@ -621,10 +621,9 @@ DwarfCompileUnit::constructAbstractSubprogramScopeDIE(LexicalScope *Scope) { } else ContextDIE = getOrCreateContextDIE(resolve(SP->getScope())); - // Passing null as the associated DIDescriptor because the abstract definition + // Passing null as the associated node because the abstract definition // shouldn't be found by lookup. - AbsDef = - &createAndAddDIE(dwarf::DW_TAG_subprogram, *ContextDIE, DIDescriptor()); + AbsDef = &createAndAddDIE(dwarf::DW_TAG_subprogram, *ContextDIE, nullptr); applySubprogramAttributesToDefinition(SP, *AbsDef); if (!includeMinimalInlineScopes()) diff --git a/lib/CodeGen/AsmPrinter/DwarfUnit.cpp b/lib/CodeGen/AsmPrinter/DwarfUnit.cpp index 91546529877..b73ca99961e 100644 --- a/lib/CodeGen/AsmPrinter/DwarfUnit.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfUnit.cpp @@ -167,7 +167,7 @@ int64_t DwarfUnit::getDefaultLowerBound() const { } /// Check whether the DIE for this MDNode can be shared across CUs. -static bool isShareableAcrossCUs(DIDescriptor D) { +static bool isShareableAcrossCUs(const DebugNode *D) { // When the MDNode can be part of the type system, the DIE can be shared // across CUs. // Combining type units and cross-CU DIE sharing is lower value (since @@ -184,7 +184,7 @@ static bool isShareableAcrossCUs(DIDescriptor D) { /// specified debug variable. We delegate the request to DwarfDebug /// when the DIE for this MDNode can be shared across CUs. The mappings /// will be kept in DwarfDebug for shareable DIEs. -DIE *DwarfUnit::getDIE(DIDescriptor D) const { +DIE *DwarfUnit::getDIE(const DebugNode *D) const { if (isShareableAcrossCUs(D)) return DU->getDIE(D); return MDNodeToDieMap.lookup(D); @@ -193,7 +193,7 @@ DIE *DwarfUnit::getDIE(DIDescriptor D) const { /// insertDIE - Insert DIE into the map. We delegate the request to DwarfDebug /// when the DIE for this MDNode can be shared across CUs. The mappings /// will be kept in DwarfDebug for shareable DIEs. -void DwarfUnit::insertDIE(DIDescriptor Desc, DIE *D) { +void DwarfUnit::insertDIE(const DebugNode *Desc, DIE *D) { if (isShareableAcrossCUs(Desc)) { DU->insertDIE(Desc, D); return; @@ -356,7 +356,7 @@ void DwarfUnit::addDIEEntry(DIE &Die, dwarf::Attribute Attribute, /// Create a DIE with the given Tag, add the DIE to its parent, and /// call insertDIE if MD is not null. -DIE &DwarfUnit::createAndAddDIE(unsigned Tag, DIE &Parent, DIDescriptor N) { +DIE &DwarfUnit::createAndAddDIE(unsigned Tag, DIE &Parent, const DebugNode *N) { assert(Tag != dwarf::DW_TAG_auto_variable && Tag != dwarf::DW_TAG_arg_variable); Parent.addChild(make_unique((dwarf::Tag)Tag)); @@ -763,8 +763,7 @@ void DwarfUnit::addLinkageName(DIE &Die, StringRef LinkageName) { /// addTemplateParams - Add template parameters into buffer. void DwarfUnit::addTemplateParams(DIE &Buffer, DIArray TParams) { // Add template parameters. - for (unsigned i = 0, e = TParams.size(); i != e; ++i) { - DIDescriptor Element = TParams[i]; + for (const auto *Element : TParams) { if (auto *TTP = dyn_cast(Element)) constructTemplateTypeParameterDIE(Buffer, TTP); else if (auto *TVP = dyn_cast(Element)) @@ -1040,8 +1039,7 @@ void DwarfUnit::constructTypeDIE(DIE &Buffer, DICompositeType CTy) { case dwarf::DW_TAG_class_type: { // Add elements to structure type. DIArray Elements = CTy->getElements(); - for (unsigned i = 0, N = Elements.size(); i < N; ++i) { - DIDescriptor Element = Elements[i]; + for (const auto *Element : Elements) { if (!Element) continue; if (auto *SP = dyn_cast(Element)) @@ -1438,11 +1436,10 @@ void DwarfUnit::constructEnumTypeDIE(DIE &Buffer, DICompositeType CTy) { /// constructContainingTypeDIEs - Construct DIEs for types that contain /// vtables. void DwarfUnit::constructContainingTypeDIEs() { - for (DenseMap::iterator CI = ContainingTypeMap.begin(), - CE = ContainingTypeMap.end(); + for (auto CI = ContainingTypeMap.begin(), CE = ContainingTypeMap.end(); CI != CE; ++CI) { DIE &SPDie = *CI->first; - DIDescriptor D(CI->second); + const DebugNode *D = CI->second; if (!D) continue; DIE *NDie = getDIE(D); diff --git a/lib/CodeGen/AsmPrinter/DwarfUnit.h b/lib/CodeGen/AsmPrinter/DwarfUnit.h index b354255d709..8b43e868784 100644 --- a/lib/CodeGen/AsmPrinter/DwarfUnit.h +++ b/lib/CodeGen/AsmPrinter/DwarfUnit.h @@ -106,7 +106,7 @@ protected: /// ContainingTypeMap - This map is used to keep track of subprogram DIEs that /// need DW_AT_containing_type attribute. This attribute points to a DIE that /// corresponds to the MDNode mapped with the subprogram DIE. - DenseMap ContainingTypeMap; + DenseMap ContainingTypeMap; // DIEValueAllocator - All DIEValues are allocated through this allocator. BumpPtrAllocator DIEValueAllocator; @@ -169,7 +169,7 @@ public: /// when the MDNode can be part of the type system, since DIEs for /// the type system can be shared across CUs and the mappings are /// kept in DwarfDebug. - DIE *getDIE(DIDescriptor D) const; + DIE *getDIE(const DebugNode *D) const; /// getDIELoc - Returns a fresh newly allocated DIELoc. DIELoc *getDIELoc() { return new (DIEValueAllocator) DIELoc(); } @@ -178,7 +178,7 @@ public: /// when the MDNode can be part of the type system, since DIEs for /// the type system can be shared across CUs and the mappings are /// kept in DwarfDebug. - void insertDIE(DIDescriptor Desc, DIE *D); + void insertDIE(const DebugNode *Desc, DIE *D); /// addFlag - Add a flag that is true to the DIE. void addFlag(DIE &Die, dwarf::Attribute Attribute); @@ -313,8 +313,7 @@ public: /// Create a DIE with the given Tag, add the DIE to its parent, and /// call insertDIE if MD is not null. - DIE &createAndAddDIE(unsigned Tag, DIE &Parent, - DIDescriptor N = DIDescriptor()); + DIE &createAndAddDIE(unsigned Tag, DIE &Parent, const DebugNode *N = nullptr); /// Compute the size of a header for this unit, not including the initial /// length field. diff --git a/tools/opt/BreakpointPrinter.cpp b/tools/opt/BreakpointPrinter.cpp index 8f390a10e3b..26c1b551127 100644 --- a/tools/opt/BreakpointPrinter.cpp +++ b/tools/opt/BreakpointPrinter.cpp @@ -29,13 +29,13 @@ struct BreakpointPrinter : public ModulePass { BreakpointPrinter(raw_ostream &out) : ModulePass(ID), Out(out) {} - void getContextName(DIDescriptor Context, std::string &N) { + void getContextName(const MDScope *Context, std::string &N) { if (auto *NS = dyn_cast(Context)) { if (!NS->getName().empty()) { getContextName(NS->getScope(), N); N = N + NS->getName().str() + "::"; } - } else if (DIType TY = dyn_cast(Context)) { + } else if (auto *TY = dyn_cast(Context)) { if (!TY->getName().empty()) { getContextName(TY->getScope().resolve(TypeIdentifierMap), N); N = N + TY->getName().str() + "::";