From: Duncan P. N. Exon Smith Date: Mon, 20 Apr 2015 21:17:32 +0000 (+0000) Subject: DebugInfo: Delete old subclasses of DIType X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=commitdiff_plain;h=92b3bf95a1846e16bb85929544747b1c074b2fab DebugInfo: Delete old subclasses of DIType Delete subclasses of (the already deleted) `DIType` in favour of directly using pointers from the `Metadata` hierarchy. While `DICompositeType` wraps `MDCompositeTypeBase` and `DIDerivedType` wraps `MDDerivedTypeBase`, most uses of each really meant the more specific `MDCompositeType` and `MDDerivedType`. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@235351 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/bindings/go/llvm/DIBuilderBindings.cpp b/bindings/go/llvm/DIBuilderBindings.cpp index cfae6053bfe..cd538e363a5 100644 --- a/bindings/go/llvm/DIBuilderBindings.cpp +++ b/bindings/go/llvm/DIBuilderBindings.cpp @@ -104,8 +104,7 @@ LLVMMetadataRef LLVMDIBuilderCreateBasicType(LLVMDIBuilderRef Dref, uint64_t AlignInBits, unsigned Encoding) { DIBuilder *D = unwrap(Dref); - DIBasicType T = D->createBasicType(Name, SizeInBits, AlignInBits, Encoding); - return wrap(T); + return wrap(D->createBasicType(Name, SizeInBits, AlignInBits, Encoding)); } LLVMMetadataRef LLVMDIBuilderCreatePointerType(LLVMDIBuilderRef Dref, @@ -114,19 +113,17 @@ LLVMMetadataRef LLVMDIBuilderCreatePointerType(LLVMDIBuilderRef Dref, uint64_t AlignInBits, const char *Name) { DIBuilder *D = unwrap(Dref); - DIDerivedType T = D->createPointerType(unwrap(PointeeType), - SizeInBits, AlignInBits, Name); - return wrap(T); + return wrap(D->createPointerType(unwrap(PointeeType), SizeInBits, + AlignInBits, Name)); } LLVMMetadataRef LLVMDIBuilderCreateSubroutineType(LLVMDIBuilderRef Dref, LLVMMetadataRef File, LLVMMetadataRef ParameterTypes) { DIBuilder *D = unwrap(Dref); - DICompositeType CT = + return wrap( D->createSubroutineType(File ? unwrap(File) : nullptr, - DITypeArray(unwrap(ParameterTypes))); - return wrap(CT); + DITypeArray(unwrap(ParameterTypes)))); } LLVMMetadataRef LLVMDIBuilderCreateStructType( @@ -135,12 +132,11 @@ LLVMMetadataRef LLVMDIBuilderCreateStructType( uint64_t AlignInBits, unsigned Flags, LLVMMetadataRef DerivedFrom, LLVMMetadataRef ElementTypes) { DIBuilder *D = unwrap(Dref); - DICompositeType CT = D->createStructType( + return wrap(D->createStructType( unwrap(Scope), Name, File ? unwrap(File) : nullptr, Line, SizeInBits, AlignInBits, Flags, DerivedFrom ? unwrap(DerivedFrom) : nullptr, - ElementTypes ? DIArray(unwrap(ElementTypes)) : nullptr); - return wrap(CT); + ElementTypes ? DIArray(unwrap(ElementTypes)) : nullptr)); } LLVMMetadataRef LLVMDIBuilderCreateReplaceableCompositeType( @@ -149,10 +145,9 @@ LLVMMetadataRef LLVMDIBuilderCreateReplaceableCompositeType( unsigned RuntimeLang, uint64_t SizeInBits, uint64_t AlignInBits, unsigned Flags) { DIBuilder *D = unwrap(Dref); - DICompositeType CT = D->createReplaceableCompositeType( + return wrap(D->createReplaceableCompositeType( Tag, Name, unwrap(Scope), File ? unwrap(File) : nullptr, - Line, RuntimeLang, SizeInBits, AlignInBits, Flags); - return wrap(CT); + Line, RuntimeLang, SizeInBits, AlignInBits, Flags)); } LLVMMetadataRef @@ -162,10 +157,9 @@ LLVMDIBuilderCreateMemberType(LLVMDIBuilderRef Dref, LLVMMetadataRef Scope, uint64_t AlignInBits, uint64_t OffsetInBits, unsigned Flags, LLVMMetadataRef Ty) { DIBuilder *D = unwrap(Dref); - DIDerivedType DT = D->createMemberType( + return wrap(D->createMemberType( unwrap(Scope), Name, File ? unwrap(File) : nullptr, Line, - SizeInBits, AlignInBits, OffsetInBits, Flags, unwrap(Ty)); - return wrap(DT); + SizeInBits, AlignInBits, OffsetInBits, Flags, unwrap(Ty))); } LLVMMetadataRef LLVMDIBuilderCreateArrayType(LLVMDIBuilderRef Dref, @@ -174,10 +168,9 @@ LLVMMetadataRef LLVMDIBuilderCreateArrayType(LLVMDIBuilderRef Dref, LLVMMetadataRef ElementType, LLVMMetadataRef Subscripts) { DIBuilder *D = unwrap(Dref); - DICompositeType CT = - D->createArrayType(SizeInBits, AlignInBits, unwrap(ElementType), - DIArray(unwrap(Subscripts))); - return wrap(CT); + return wrap(D->createArrayType(SizeInBits, AlignInBits, + unwrap(ElementType), + DIArray(unwrap(Subscripts)))); } LLVMMetadataRef LLVMDIBuilderCreateTypedef(LLVMDIBuilderRef Dref, @@ -185,10 +178,9 @@ LLVMMetadataRef LLVMDIBuilderCreateTypedef(LLVMDIBuilderRef Dref, LLVMMetadataRef File, unsigned Line, LLVMMetadataRef Context) { DIBuilder *D = unwrap(Dref); - DIDerivedType DT = D->createTypedef( - unwrap(Ty), Name, File ? unwrap(File) : nullptr, Line, - Context ? unwrap(Context) : nullptr); - return wrap(DT); + return wrap(D->createTypedef(unwrap(Ty), Name, + File ? unwrap(File) : nullptr, Line, + Context ? unwrap(Context) : nullptr)); } LLVMMetadataRef LLVMDIBuilderGetOrCreateSubrange(LLVMDIBuilderRef Dref, diff --git a/include/llvm/IR/DebugInfo.h b/include/llvm/IR/DebugInfo.h index f7bba3542dd..53c5e9ad120 100644 --- a/include/llvm/IR/DebugInfo.h +++ b/include/llvm/IR/DebugInfo.h @@ -62,10 +62,6 @@ typedef DenseMap DITypeIdentifierMap; template <> struct simplify_type; DECLARE_SIMPLIFY_DESCRIPTOR(DISubrange) DECLARE_SIMPLIFY_DESCRIPTOR(DIEnumerator) -DECLARE_SIMPLIFY_DESCRIPTOR(DIBasicType) -DECLARE_SIMPLIFY_DESCRIPTOR(DIDerivedType) -DECLARE_SIMPLIFY_DESCRIPTOR(DICompositeType) -DECLARE_SIMPLIFY_DESCRIPTOR(DISubroutineType) DECLARE_SIMPLIFY_DESCRIPTOR(DIFile) DECLARE_SIMPLIFY_DESCRIPTOR(DICompileUnit) DECLARE_SIMPLIFY_DESCRIPTOR(DISubprogram) @@ -108,55 +104,6 @@ public: MDEnumerator &operator*() const { return *N; } }; -class DIBasicType { - MDBasicType *N; - -public: - DIBasicType(const MDBasicType *N = nullptr) - : N(const_cast(N)) {} - - operator MDBasicType *() const { return N; } - MDBasicType *operator->() const { return N; } - MDBasicType &operator*() const { return *N; } -}; - -class DIDerivedType { - MDDerivedTypeBase *N; - -public: - DIDerivedType(const MDDerivedTypeBase *N = nullptr) - : N(const_cast(N)) {} - - operator MDDerivedTypeBase *() const { return N; } - MDDerivedTypeBase *operator->() const { return N; } - MDDerivedTypeBase &operator*() const { return *N; } -}; - -class DICompositeType { - MDCompositeTypeBase *N; - -public: - DICompositeType(const MDCompositeTypeBase *N = nullptr) - : N(const_cast(N)) {} - - operator MDCompositeTypeBase *() const { return N; } - MDCompositeTypeBase *operator->() const { return N; } - MDCompositeTypeBase &operator*() const { return *N; } -}; - -class DISubroutineType { - MDSubroutineType *N; - -public: - DISubroutineType(const MDSubroutineType *N = nullptr) - : N(const_cast(N)) {} - - operator DICompositeType() const { return N; } - operator MDSubroutineType *() const { return N; } - MDSubroutineType *operator->() const { return N; } - MDSubroutineType &operator*() const { return *N; } -}; - class DIFile { MDFile *N; @@ -331,10 +278,6 @@ public: template <> struct simplify_type : simplify_type {}; SIMPLIFY_DESCRIPTOR(DISubrange) SIMPLIFY_DESCRIPTOR(DIEnumerator) -SIMPLIFY_DESCRIPTOR(DIBasicType) -SIMPLIFY_DESCRIPTOR(DIDerivedType) -SIMPLIFY_DESCRIPTOR(DICompositeType) -SIMPLIFY_DESCRIPTOR(DISubroutineType) SIMPLIFY_DESCRIPTOR(DIFile) SIMPLIFY_DESCRIPTOR(DICompileUnit) SIMPLIFY_DESCRIPTOR(DISubprogram) diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index ee126f441ac..b2a2220a58f 100644 --- a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -1902,7 +1902,7 @@ static uint64_t makeTypeSignature(StringRef Identifier) { void DwarfDebug::addDwarfTypeUnitType(DwarfCompileUnit &CU, StringRef Identifier, DIE &RefDie, - DICompositeType CTy) { + const MDCompositeType *CTy) { // Fast path if we're building some type units and one has already used the // address pool we know we're going to throw away all this work anyway, so // don't bother building dependent types. diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.h b/lib/CodeGen/AsmPrinter/DwarfDebug.h index 4a139ce1ac3..ef971124dea 100644 --- a/lib/CodeGen/AsmPrinter/DwarfDebug.h +++ b/lib/CodeGen/AsmPrinter/DwarfDebug.h @@ -268,7 +268,8 @@ class DwarfDebug : public AsmPrinterHandler { // them. DenseMap DwarfTypeUnits; - SmallVector, DICompositeType>, 1> + SmallVector< + std::pair, const MDCompositeType *>, 1> TypeUnitsUnderConstruction; // Whether to emit the pubnames/pubtypes sections. @@ -519,7 +520,7 @@ public: /// \brief Add a DIE to the set of types that we're going to pull into /// type units. void addDwarfTypeUnitType(DwarfCompileUnit &CU, StringRef Identifier, - DIE &Die, DICompositeType CTy); + DIE &Die, const MDCompositeType *CTy); /// \brief Add a label so that arange data can be generated for it. void addArangeLabel(SymbolCU SCU) { ArangeLabels.push_back(SCU); } diff --git a/lib/CodeGen/AsmPrinter/DwarfUnit.cpp b/lib/CodeGen/AsmPrinter/DwarfUnit.cpp index 21257511772..83fbb79979d 100644 --- a/lib/CodeGen/AsmPrinter/DwarfUnit.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfUnit.cpp @@ -467,7 +467,7 @@ void DwarfUnit::addBlockByrefAddress(const DbgVariable &DV, DIE &Die, StringRef varName = DV.getName(); if (Tag == dwarf::DW_TAG_pointer_type) { - DIDerivedType DTy = cast(Ty); + auto *DTy = cast(Ty); TmpTy = resolve(DTy->getBaseType()); isPointer = true; } @@ -475,11 +475,11 @@ void DwarfUnit::addBlockByrefAddress(const DbgVariable &DV, DIE &Die, // Find the __forwarding field and the variable field in the __Block_byref // struct. DIArray Fields = cast(TmpTy)->getElements(); - DIDerivedType varField; - DIDerivedType forwardingField; + const MDDerivedType *varField = nullptr; + const MDDerivedType *forwardingField = nullptr; for (unsigned i = 0, N = Fields.size(); i < N; ++i) { - DIDerivedType DT = cast(Fields[i]); + auto *DT = cast(Fields[i]); StringRef fieldName = DT->getName(); if (fieldName == "__forwarding") forwardingField = DT; @@ -535,7 +535,7 @@ void DwarfUnit::addBlockByrefAddress(const DbgVariable &DV, DIE &Die, /// Return true if type encoding is unsigned. static bool isUnsignedDIType(DwarfDebug *DD, const MDType *Ty) { - if (DIDerivedType DTy = dyn_cast(Ty)) { + if (auto *DTy = dyn_cast(Ty)) { dwarf::Tag T = (dwarf::Tag)Ty->getTag(); // Encode pointer constants as unsigned bytes. This is used at least for // null pointer constant emission. @@ -565,7 +565,7 @@ static bool isUnsignedDIType(DwarfDebug *DD, const MDType *Ty) { return false; } - DIBasicType BTy = cast(Ty); + auto *BTy = cast(Ty); unsigned Encoding = BTy->getEncoding(); assert((Encoding == dwarf::DW_ATE_unsigned || Encoding == dwarf::DW_ATE_unsigned_char || @@ -583,7 +583,7 @@ static bool isUnsignedDIType(DwarfDebug *DD, const MDType *Ty) { } /// If this type is derived from a base type then return base type size. -static uint64_t getBaseTypeSize(DwarfDebug *DD, DIDerivedType Ty) { +static uint64_t getBaseTypeSize(DwarfDebug *DD, const MDDerivedType *Ty) { unsigned Tag = Ty->getTag(); if (Tag != dwarf::DW_TAG_member && Tag != dwarf::DW_TAG_typedef && @@ -602,7 +602,7 @@ static uint64_t getBaseTypeSize(DwarfDebug *DD, DIDerivedType Ty) { BaseType->getTag() == dwarf::DW_TAG_rvalue_reference_type) return Ty->getSizeInBits(); - if (auto *DT = dyn_cast(BaseType)) + if (auto *DT = dyn_cast(BaseType)) return getBaseTypeSize(DD, DT); return BaseType->getSizeInBits(); @@ -717,7 +717,7 @@ DIE *DwarfUnit::getOrCreateContextDIE(const MDScope *Context) { return getDIE(Context); } -DIE *DwarfUnit::createTypeDIE(DICompositeType Ty) { +DIE *DwarfUnit::createTypeDIE(const MDCompositeType *Ty) { auto *Context = resolve(Ty->getScope()); DIE *ContextDIE = getOrCreateContextDIE(Context); @@ -853,7 +853,7 @@ std::string DwarfUnit::getParentContextString(const MDScope *Context) const { return CS; } -void DwarfUnit::constructTypeDIE(DIE &Buffer, DIBasicType BTy) { +void DwarfUnit::constructTypeDIE(DIE &Buffer, const MDBasicType *BTy) { // Get core information. StringRef Name = BTy->getName(); // Add name if not anonymous or intermediate type. @@ -871,7 +871,7 @@ void DwarfUnit::constructTypeDIE(DIE &Buffer, DIBasicType BTy) { addUInt(Buffer, dwarf::DW_AT_byte_size, None, Size); } -void DwarfUnit::constructTypeDIE(DIE &Buffer, DIDerivedType DTy) { +void DwarfUnit::constructTypeDIE(DIE &Buffer, const MDDerivedType *DTy) { // Get core information. StringRef Name = DTy->getName(); uint64_t Size = DTy->getSizeInBits() >> 3; @@ -967,7 +967,7 @@ void DwarfUnit::constructTypeDIE(DIE &Buffer, const MDCompositeType *CTy) { continue; if (auto *SP = dyn_cast(Element)) getOrCreateSubprogramDIE(SP); - else if (DIDerivedType DDTy = dyn_cast(Element)) { + else if (auto *DDTy = dyn_cast(Element)) { if (DDTy->getTag() == dwarf::DW_TAG_friend) { DIE &ElemDie = createAndAddDIE(dwarf::DW_TAG_friend, Buffer); addType(ElemDie, resolve(DDTy->getBaseType()), dwarf::DW_AT_friend); @@ -1006,7 +1006,7 @@ void DwarfUnit::constructTypeDIE(DIE &Buffer, const MDCompositeType *CTy) { // This is outside the DWARF spec, but GDB expects a DW_AT_containing_type // inside C++ composite types to point to the base class with the vtable. - if (DICompositeType ContainingType = + if (auto *ContainingType = dyn_cast_or_null(resolve(CTy->getVTableHolder()))) addDIEEntry(Buffer, dwarf::DW_AT_containing_type, *getOrCreateTypeDIE(ContainingType)); @@ -1208,7 +1208,7 @@ void DwarfUnit::applySubprogramAttributes(DISubprogram SP, DIE &SPDie, Language == dwarf::DW_LANG_ObjC)) addFlag(SPDie, dwarf::DW_AT_prototyped); - DISubroutineType SPTy = SP->getType(); + const MDSubroutineType *SPTy = SP->getType(); assert(SPTy->getTag() == dwarf::DW_TAG_subroutine_type && "the type of a subprogram should be a subroutine"); @@ -1303,7 +1303,7 @@ DIE *DwarfUnit::getIndexTyDie() { return IndexTyDie; } -void DwarfUnit::constructArrayTypeDIE(DIE &Buffer, DICompositeType CTy) { +void DwarfUnit::constructArrayTypeDIE(DIE &Buffer, const MDCompositeType *CTy) { if (CTy->isVector()) addFlag(Buffer, dwarf::DW_AT_GNU_vector); @@ -1325,7 +1325,7 @@ void DwarfUnit::constructArrayTypeDIE(DIE &Buffer, DICompositeType CTy) { } } -void DwarfUnit::constructEnumTypeDIE(DIE &Buffer, DICompositeType CTy) { +void DwarfUnit::constructEnumTypeDIE(DIE &Buffer, const MDCompositeType *CTy) { DIArray Elements = CTy->getElements(); // Add enumerators to enumeration type. @@ -1361,10 +1361,7 @@ void DwarfUnit::constructContainingTypeDIEs() { } } -void DwarfUnit::constructMemberDIE(DIE &Buffer, DIDerivedType DT_) { - // Downcast to MDDerivedType. - const MDDerivedType *DT = cast(DT_); - +void DwarfUnit::constructMemberDIE(DIE &Buffer, const MDDerivedType *DT) { DIE &MemberDie = createAndAddDIE(DT->getTag(), Buffer); StringRef Name = DT->getName(); if (!Name.empty()) @@ -1452,8 +1449,7 @@ void DwarfUnit::constructMemberDIE(DIE &Buffer, DIDerivedType DT_) { addFlag(MemberDie, dwarf::DW_AT_artificial); } -DIE *DwarfUnit::getOrCreateStaticMemberDIE(DIDerivedType DT_) { - const MDDerivedType *DT = cast_or_null(DT_); +DIE *DwarfUnit::getOrCreateStaticMemberDIE(const MDDerivedType *DT) { if (!DT) return nullptr; diff --git a/lib/CodeGen/AsmPrinter/DwarfUnit.h b/lib/CodeGen/AsmPrinter/DwarfUnit.h index a92b30f4399..e8fd13e574a 100644 --- a/lib/CodeGen/AsmPrinter/DwarfUnit.h +++ b/lib/CodeGen/AsmPrinter/DwarfUnit.h @@ -307,7 +307,7 @@ public: DIE *getOrCreateTypeDIE(const MDNode *N); /// \brief Get context owner's DIE. - DIE *createTypeDIE(DICompositeType Ty); + DIE *createTypeDIE(const MDCompositeType *Ty); /// \brief Get context owner's DIE. DIE *getOrCreateContextDIE(const MDScope *Context); @@ -339,7 +339,7 @@ public: protected: /// \brief Create new static data member DIE. - DIE *getOrCreateStaticMemberDIE(DIDerivedType DT); + DIE *getOrCreateStaticMemberDIE(const MDDerivedType *DT); /// Look up the source ID with the given directory and source file names. If /// none currently exists, create a new ID and insert it in the line table. @@ -352,13 +352,13 @@ protected: } private: - void constructTypeDIE(DIE &Buffer, DIBasicType BTy); - void constructTypeDIE(DIE &Buffer, DIDerivedType DTy); + void constructTypeDIE(DIE &Buffer, const MDBasicType *BTy); + void constructTypeDIE(DIE &Buffer, const MDDerivedType *DTy); void constructTypeDIE(DIE &Buffer, const MDSubroutineType *DTy); void constructSubrangeDIE(DIE &Buffer, DISubrange SR, DIE *IndexTy); - void constructArrayTypeDIE(DIE &Buffer, DICompositeType CTy); - void constructEnumTypeDIE(DIE &Buffer, DICompositeType CTy); - void constructMemberDIE(DIE &Buffer, DIDerivedType DT); + void constructArrayTypeDIE(DIE &Buffer, const MDCompositeType *CTy); + void constructEnumTypeDIE(DIE &Buffer, const MDCompositeType *CTy); + void constructMemberDIE(DIE &Buffer, const MDDerivedType *DT); void constructTemplateTypeParameterDIE(DIE &Buffer, DITemplateTypeParameter TP); void constructTemplateValueParameterDIE(DIE &Buffer,