From 91ad62302f557261cd45b719d6d08a695f6167a7 Mon Sep 17 00:00:00 2001 From: "Duncan P. N. Exon Smith" Date: Mon, 20 Apr 2015 18:52:06 +0000 Subject: [PATCH] DebugInfo: Remove DIType This is the last major parent class, so I'll probably start deleting classes in batches now. Looks like many of the references to the DI* hierarchy were updated organically along the way. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@235331 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/IR/DebugInfo.h | 18 ----------------- lib/CodeGen/AsmPrinter/DwarfDebug.cpp | 12 +++++------ lib/CodeGen/AsmPrinter/DwarfDebug.h | 2 +- lib/CodeGen/AsmPrinter/DwarfUnit.cpp | 28 ++++++++++++++------------ lib/CodeGen/AsmPrinter/DwarfUnit.h | 12 +++++------ unittests/Transforms/Utils/Cloning.cpp | 4 ++-- 6 files changed, 29 insertions(+), 47 deletions(-) diff --git a/include/llvm/IR/DebugInfo.h b/include/llvm/IR/DebugInfo.h index 97f90ae30f4..f7bba3542dd 100644 --- a/include/llvm/IR/DebugInfo.h +++ b/include/llvm/IR/DebugInfo.h @@ -51,7 +51,6 @@ class DISubprogram; class DILexicalBlock; class DILexicalBlockFile; class DIVariable; -class DIType; class DIObjCProperty; /// \brief Maps from type identifier to the actual MDNode. @@ -63,7 +62,6 @@ typedef DenseMap DITypeIdentifierMap; template <> struct simplify_type; DECLARE_SIMPLIFY_DESCRIPTOR(DISubrange) DECLARE_SIMPLIFY_DESCRIPTOR(DIEnumerator) -DECLARE_SIMPLIFY_DESCRIPTOR(DIType) DECLARE_SIMPLIFY_DESCRIPTOR(DIBasicType) DECLARE_SIMPLIFY_DESCRIPTOR(DIDerivedType) DECLARE_SIMPLIFY_DESCRIPTOR(DICompositeType) @@ -110,17 +108,6 @@ public: MDEnumerator &operator*() const { return *N; } }; -class DIType { - MDType *N; - -public: - DIType(const MDType *N = nullptr) : N(const_cast(N)) {} - - operator MDType *() const { return N; } - MDType *operator->() const { return N; } - MDType &operator*() const { return *N; } -}; - class DIBasicType { MDBasicType *N; @@ -128,7 +115,6 @@ public: DIBasicType(const MDBasicType *N = nullptr) : N(const_cast(N)) {} - operator DIType() const { return N; } operator MDBasicType *() const { return N; } MDBasicType *operator->() const { return N; } MDBasicType &operator*() const { return *N; } @@ -141,7 +127,6 @@ public: DIDerivedType(const MDDerivedTypeBase *N = nullptr) : N(const_cast(N)) {} - operator DIType() const { return N; } operator MDDerivedTypeBase *() const { return N; } MDDerivedTypeBase *operator->() const { return N; } MDDerivedTypeBase &operator*() const { return *N; } @@ -154,7 +139,6 @@ public: DICompositeType(const MDCompositeTypeBase *N = nullptr) : N(const_cast(N)) {} - operator DIType() const { return N; } operator MDCompositeTypeBase *() const { return N; } MDCompositeTypeBase *operator->() const { return N; } MDCompositeTypeBase &operator*() const { return *N; } @@ -167,7 +151,6 @@ public: DISubroutineType(const MDSubroutineType *N = nullptr) : N(const_cast(N)) {} - operator DIType() const { return N; } operator DICompositeType() const { return N; } operator MDSubroutineType *() const { return N; } MDSubroutineType *operator->() const { return N; } @@ -348,7 +331,6 @@ public: template <> struct simplify_type : simplify_type {}; SIMPLIFY_DESCRIPTOR(DISubrange) SIMPLIFY_DESCRIPTOR(DIEnumerator) -SIMPLIFY_DESCRIPTOR(DIType) SIMPLIFY_DESCRIPTOR(DIBasicType) SIMPLIFY_DESCRIPTOR(DIDerivedType) SIMPLIFY_DESCRIPTOR(DICompositeType) diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index c69edddc049..4599a8cec7c 100644 --- a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -141,7 +141,7 @@ bool DbgVariable::isBlockByrefVariable() const { ->isBlockByrefStruct(); } -DIType DbgVariable::getType() const { +const MDType *DbgVariable::getType() const { MDType *Ty = Var->getType().resolve(DD->getTypeIdentifierMap()); // FIXME: isBlockByrefVariable should be reformulated in terms of complex // addresses instead. @@ -459,17 +459,15 @@ void DwarfDebug::beginModule() { CU.getOrCreateGlobalVariableDIE(GV); for (auto *SP : CUNode->getSubprograms()) SPMap.insert(std::make_pair(SP, &CU)); - for (DIType Ty : CUNode->getEnumTypes()) { + for (auto *Ty : CUNode->getEnumTypes()) { // The enum types array by design contains pointers to // MDNodes rather than DIRefs. Unique them here. - DIType UniqueTy = cast(resolve(Ty->getRef())); - CU.getOrCreateTypeDIE(UniqueTy); + CU.getOrCreateTypeDIE(cast(resolve(Ty->getRef()))); } - for (DIType Ty : CUNode->getRetainedTypes()) { + for (auto *Ty : CUNode->getRetainedTypes()) { // The retained types array by design contains pointers to // MDNodes rather than DIRefs. Unique them here. - DIType UniqueTy = cast(resolve(Ty->getRef())); - CU.getOrCreateTypeDIE(UniqueTy); + CU.getOrCreateTypeDIE(cast(resolve(Ty->getRef()))); } // Emit imported_modules last so that the relevant context is already // available. diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.h b/lib/CodeGen/AsmPrinter/DwarfDebug.h index 4c50b6207d9..4a139ce1ac3 100644 --- a/lib/CodeGen/AsmPrinter/DwarfDebug.h +++ b/lib/CodeGen/AsmPrinter/DwarfDebug.h @@ -165,7 +165,7 @@ public: return Expr.back()->getNumElements() > 0; } bool isBlockByrefVariable() const; - DIType getType() const; + const MDType *getType() const; private: /// resolve - Look in the DwarfDebug map for the MDNode that diff --git a/lib/CodeGen/AsmPrinter/DwarfUnit.cpp b/lib/CodeGen/AsmPrinter/DwarfUnit.cpp index fe8be422d4d..c1958a8ac3f 100644 --- a/lib/CodeGen/AsmPrinter/DwarfUnit.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfUnit.cpp @@ -421,7 +421,7 @@ void DwarfUnit::addSourceLine(DIE &Die, DISubprogram SP) { /// addSourceLine - Add location information to specified debug information /// entry. -void DwarfUnit::addSourceLine(DIE &Die, DIType Ty) { +void DwarfUnit::addSourceLine(DIE &Die, const MDType *Ty) { assert(Ty); addSourceLine(Die, Ty->getLine(), Ty->getFilename(), Ty->getDirectory()); @@ -519,8 +519,8 @@ bool DwarfUnit::addRegisterOffset(DIELoc &TheDie, unsigned Reg, void DwarfUnit::addBlockByrefAddress(const DbgVariable &DV, DIE &Die, dwarf::Attribute Attribute, const MachineLocation &Location) { - DIType Ty = DV.getType(); - DIType TmpTy = Ty; + const MDType *Ty = DV.getType(); + const MDType *TmpTy = Ty; uint16_t Tag = Ty->getTag(); bool isPointer = false; @@ -594,7 +594,7 @@ void DwarfUnit::addBlockByrefAddress(const DbgVariable &DV, DIE &Die, } /// Return true if type encoding is unsigned. -static bool isUnsignedDIType(DwarfDebug *DD, DIType Ty) { +static bool isUnsignedDIType(DwarfDebug *DD, const MDType *Ty) { if (DIDerivedType DTy = dyn_cast(Ty)) { dwarf::Tag T = (dwarf::Tag)Ty->getTag(); // Encode pointer constants as unsigned bytes. This is used at least for @@ -698,13 +698,14 @@ void DwarfUnit::addConstantFPValue(DIE &Die, const ConstantFP *CFP) { } /// addConstantValue - Add constant value entry in variable DIE. -void DwarfUnit::addConstantValue(DIE &Die, const ConstantInt *CI, DIType Ty) { +void DwarfUnit::addConstantValue(DIE &Die, const ConstantInt *CI, + const MDType *Ty) { addConstantValue(Die, CI->getValue(), Ty); } /// addConstantValue - Add constant value entry in variable DIE. void DwarfUnit::addConstantValue(DIE &Die, const MachineOperand &MO, - DIType Ty) { + const MDType *Ty) { assert(MO.isImm() && "Invalid machine operand!"); addConstantValue(Die, isUnsignedDIType(DD, Ty), MO.getImm()); @@ -717,7 +718,7 @@ void DwarfUnit::addConstantValue(DIE &Die, bool Unsigned, uint64_t Val) { Unsigned ? dwarf::DW_FORM_udata : dwarf::DW_FORM_sdata, Val); } -void DwarfUnit::addConstantValue(DIE &Die, const APInt &Val, DIType Ty) { +void DwarfUnit::addConstantValue(DIE &Die, const APInt &Val, const MDType *Ty) { addConstantValue(Die, Val, isUnsignedDIType(DD, Ty)); } @@ -801,7 +802,7 @@ DIE *DwarfUnit::createTypeDIE(DICompositeType Ty) { } /// getOrCreateTypeDIE - Find existing DIE or create new DIE for the -/// given DIType. +/// given type. DIE *DwarfUnit::getOrCreateTypeDIE(const MDNode *TyNode) { if (!TyNode) return nullptr; @@ -865,7 +866,8 @@ void DwarfUnit::updateAcceleratorTables(const MDScope *Context, } /// addType - Add a new type attribute to the specified entity. -void DwarfUnit::addType(DIE &Entity, DIType Ty, dwarf::Attribute Attribute) { +void DwarfUnit::addType(DIE &Entity, const MDType *Ty, + dwarf::Attribute Attribute) { assert(Ty && "Trying to add a type that doesn't exist?"); // Check for pre-existence. @@ -952,7 +954,7 @@ void DwarfUnit::constructTypeDIE(DIE &Buffer, DIDerivedType DTy) { uint16_t Tag = Buffer.getTag(); // Map to main type, void will not have a type. - DIType FromTy = resolve(DTy->getBaseType()); + const MDType *FromTy = resolve(DTy->getBaseType()); if (FromTy) addType(Buffer, FromTy); @@ -977,7 +979,7 @@ void DwarfUnit::constructTypeDIE(DIE &Buffer, DIDerivedType DTy) { /// constructSubprogramArguments - Construct function argument DIEs. void DwarfUnit::constructSubprogramArguments(DIE &Buffer, DITypeArray Args) { for (unsigned i = 1, N = Args.size(); i < N; ++i) { - DIType Ty = resolve(Args[i]); + const MDType *Ty = resolve(Args[i]); if (!Ty) { assert(i == N-1 && "Unspecified parameter must be the last argument"); createAndAddDIE(dwarf::DW_TAG_unspecified_parameters, Buffer); @@ -1424,7 +1426,7 @@ void DwarfUnit::constructEnumTypeDIE(DIE &Buffer, DICompositeType CTy) { Value); } } - DIType DTy = resolve(CTy->getBaseType()); + const MDType *DTy = resolve(CTy->getBaseType()); if (DTy) { addType(Buffer, DTy); addFlag(Buffer, dwarf::DW_AT_enum_class); @@ -1556,7 +1558,7 @@ DIE *DwarfUnit::getOrCreateStaticMemberDIE(DIDerivedType DT_) { DIE &StaticMemberDIE = createAndAddDIE(DT->getTag(), *ContextDIE, DT); - DIType Ty = resolve(DT->getBaseType()); + const MDType *Ty = resolve(DT->getBaseType()); addString(StaticMemberDIE, dwarf::DW_AT_name, DT->getName()); addType(StaticMemberDIE, Ty); diff --git a/lib/CodeGen/AsmPrinter/DwarfUnit.h b/lib/CodeGen/AsmPrinter/DwarfUnit.h index 7b7559fef5d..698ff4f5ebb 100644 --- a/lib/CodeGen/AsmPrinter/DwarfUnit.h +++ b/lib/CodeGen/AsmPrinter/DwarfUnit.h @@ -239,14 +239,14 @@ public: void addSourceLine(DIE &Die, DIVariable V); void addSourceLine(DIE &Die, DIGlobalVariable G); void addSourceLine(DIE &Die, DISubprogram SP); - void addSourceLine(DIE &Die, DIType Ty); + void addSourceLine(DIE &Die, const MDType *Ty); void addSourceLine(DIE &Die, DINameSpace NS); void addSourceLine(DIE &Die, DIObjCProperty Ty); /// addConstantValue - Add constant value entry in variable DIE. - void addConstantValue(DIE &Die, const MachineOperand &MO, DIType Ty); - void addConstantValue(DIE &Die, const ConstantInt *CI, DIType Ty); - void addConstantValue(DIE &Die, const APInt &Val, DIType Ty); + void addConstantValue(DIE &Die, const MachineOperand &MO, const MDType *Ty); + void addConstantValue(DIE &Die, const ConstantInt *CI, const MDType *Ty); + void addConstantValue(DIE &Die, const APInt &Val, const MDType *Ty); void addConstantValue(DIE &Die, const APInt &Val, bool Unsigned); void addConstantValue(DIE &Die, bool Unsigned, uint64_t Val); @@ -284,7 +284,7 @@ public: /// addType - Add a new type attribute to the specified entity. This takes /// and attribute parameter because DW_AT_friend attributes are also /// type references. - void addType(DIE &Entity, DIType Ty, + void addType(DIE &Entity, const MDType *Ty, dwarf::Attribute Attribute = dwarf::DW_AT_type); /// getOrCreateNameSpace - Create a DIE for DINameSpace. @@ -297,7 +297,7 @@ public: bool Minimal = false); /// getOrCreateTypeDIE - Find existing DIE or create new DIE for the - /// given DIType. + /// given type. DIE *getOrCreateTypeDIE(const MDNode *N); /// getOrCreateContextDIE - Get context owner's DIE. diff --git a/unittests/Transforms/Utils/Cloning.cpp b/unittests/Transforms/Utils/Cloning.cpp index 636cb3caa50..c0f25ab3b6f 100644 --- a/unittests/Transforms/Utils/Cloning.cpp +++ b/unittests/Transforms/Utils/Cloning.cpp @@ -251,8 +251,8 @@ protected: Instruction* Terminator = IBuilder.CreateRetVoid(); // Create a local variable around the alloca - DIType IntType = DBuilder.createBasicType("int", 32, 0, - dwarf::DW_ATE_signed); + auto *IntType = + DBuilder.createBasicType("int", 32, 0, dwarf::DW_ATE_signed); DIExpression E = DBuilder.createExpression(); DIVariable Variable = DBuilder.createLocalVariable( dwarf::DW_TAG_auto_variable, Subprogram, "x", File, 5, IntType, true); -- 2.34.1