From: Adrian Prantl Date: Wed, 26 Apr 2017 23:49:30 +0000 (+0000) Subject: Revert "Turn DISubprogram into a variable-length node." X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=589155c2d7c6f0b81caf0ab5b410e626794dc7d9;p=llvm Revert "Turn DISubprogram into a variable-length node." This reverts commit r301498 while investigating bot breakage. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@301499 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/IR/DebugInfoMetadata.h b/include/llvm/IR/DebugInfoMetadata.h index ce0d7e3116c..ae11181f791 100644 --- a/include/llvm/IR/DebugInfoMetadata.h +++ b/include/llvm/IR/DebugInfoMetadata.h @@ -1614,7 +1614,11 @@ public: DIScopeRef getScope() const { return DIScopeRef(getRawScope()); } StringRef getName() const { return getStringOperand(2); } - StringRef getLinkageName() const { return getStringOperand(3); } + StringRef getDisplayName() const { return getStringOperand(3); } + StringRef getLinkageName() const { return getStringOperand(4); } + + MDString *getRawName() const { return getOperandAs(2); } + MDString *getRawLinkageName() const { return getOperandAs(4); } DISubroutineType *getType() const { return cast_or_null(getRawType()); @@ -1626,7 +1630,7 @@ public: DICompileUnit *getUnit() const { return cast_or_null(getRawUnit()); } - void replaceUnit(DICompileUnit *CU) { replaceOperandWith(5, CU); } + void replaceUnit(DICompileUnit *CU) { replaceOperandWith(7, CU); } DITemplateParameterArray getTemplateParams() const { return cast_or_null(getRawTemplateParams()); } @@ -1641,21 +1645,13 @@ public: } Metadata *getRawScope() const { return getOperand(1); } - MDString *getRawName() const { return getOperandAs(2); } - MDString *getRawLinkageName() const { return getOperandAs(3); } - Metadata *getRawType() const { return getOperand(4); } - Metadata *getRawUnit() const { return getOperand(5); } - Metadata *getRawDeclaration() const { return getOperand(6); } - Metadata *getRawVariables() const { return getOperand(7); } - Metadata *getRawContainingType() const { - return getNumOperands() > 8 ? getOperand(8) : nullptr; - } - Metadata *getRawTemplateParams() const { - return getNumOperands() > 9 ? getOperand(9) : nullptr; - } - Metadata *getRawThrownTypes() const { - return getNumOperands() > 10 ? getOperand(10) : nullptr; - } + Metadata *getRawType() const { return getOperand(5); } + Metadata *getRawContainingType() const { return getOperand(6); } + Metadata *getRawUnit() const { return getOperand(7); } + Metadata *getRawTemplateParams() const { return getOperand(8); } + Metadata *getRawDeclaration() const { return getOperand(9); } + Metadata *getRawVariables() const { return getOperand(10); } + Metadata *getRawThrownTypes() const { return getOperand(11); } /// Check if this subprogram describes the given function. /// diff --git a/lib/Bitcode/Reader/MetadataLoader.cpp b/lib/Bitcode/Reader/MetadataLoader.cpp index 24fdca33c23..7ca2e167da0 100644 --- a/lib/Bitcode/Reader/MetadataLoader.cpp +++ b/lib/Bitcode/Reader/MetadataLoader.cpp @@ -474,8 +474,8 @@ class MetadataLoader::MetadataLoaderImpl { for (auto CU_SP : CUSubprograms) if (auto *SPs = dyn_cast_or_null(CU_SP.second)) for (auto &Op : SPs->operands()) - if (auto *SP = dyn_cast_or_null(Op)) - SP->replaceUnit(CU_SP.first); + if (auto *SP = dyn_cast_or_null(Op)) + SP->replaceOperandWith(7, CU_SP.first); CUSubprograms.clear(); } diff --git a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp index b11e30c359b..d99065b1b67 100644 --- a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp +++ b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp @@ -820,7 +820,7 @@ static bool emitDebugValueComment(const MachineInstr *MI, AsmPrinter &AP) { const DILocalVariable *V = MI->getDebugVariable(); if (auto *SP = dyn_cast(V->getScope())) { - StringRef Name = SP->getName(); + StringRef Name = SP->getDisplayName(); if (!Name.empty()) OS << Name << ":"; } diff --git a/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp b/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp index 665dbc0b614..2571f686965 100644 --- a/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp +++ b/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp @@ -237,7 +237,7 @@ TypeIndex CodeViewDebug::getFuncIdForSubprogram(const DISubprogram *SP) { // The display name includes function template arguments. Drop them to match // MSVC. - StringRef DisplayName = SP->getName().split('<').first; + StringRef DisplayName = SP->getDisplayName().split('<').first; const DIScope *Scope = SP->getScope().resolve(); TypeIndex TI; @@ -657,7 +657,7 @@ void CodeViewDebug::emitInlineeLinesSubsection() { OS.AddBlankLine(); unsigned FileId = maybeRecordFile(SP->getFile()); - OS.AddComment("Inlined function " + SP->getName() + " starts at " + + OS.AddComment("Inlined function " + SP->getDisplayName() + " starts at " + SP->getFilename() + Twine(':') + Twine(SP->getLine())); OS.AddBlankLine(); // The filechecksum table uses 8 byte entries for now, and file ids start at @@ -759,9 +759,9 @@ void CodeViewDebug::emitDebugInfoForFunction(const Function *GV, // If we have a display name, build the fully qualified name by walking the // chain of scopes. - if (!SP->getName().empty()) + if (!SP->getDisplayName().empty()) FuncName = - getFullyQualifiedName(SP->getScope().resolve(), SP->getName()); + getFullyQualifiedName(SP->getScope().resolve(), SP->getDisplayName()); // If our DISubprogram name is empty, use the mangled name. if (FuncName.empty()) diff --git a/lib/IR/DebugInfoMetadata.cpp b/lib/IR/DebugInfoMetadata.cpp index 3db9a3de92e..498617c4460 100644 --- a/lib/IR/DebugInfoMetadata.cpp +++ b/lib/IR/DebugInfoMetadata.cpp @@ -214,10 +214,6 @@ void GenericDINode::recalculateHash() { #define DEFINE_GETIMPL_STORE_NO_CONSTRUCTOR_ARGS(CLASS, OPS) \ return storeImpl(new (array_lengthof(OPS)) CLASS(Context, Storage, OPS), \ Storage, Context.pImpl->CLASS##s) -#define DEFINE_GETIMPL_STORE_N(CLASS, ARGS, OPS, NUM_OPS) \ - return storeImpl(new (NUM_OPS) \ - CLASS(Context, Storage, UNWRAP_ARGS(ARGS), OPS), \ - Storage, Context.pImpl->CLASS##s) DISubrange *DISubrange::getImpl(LLVMContext &Context, int64_t Count, int64_t Lo, StorageType Storage, bool ShouldCreate) { @@ -453,22 +449,13 @@ DISubprogram *DISubprogram::getImpl( IsDefinition, ScopeLine, ContainingType, Virtuality, VirtualIndex, ThisAdjustment, Flags, IsOptimized, Unit, TemplateParams, Declaration, Variables, ThrownTypes)); - SmallVector Ops = { - File, Scope, Name, LinkageName, Type, Unit, - Declaration, Variables, ContainingType, TemplateParams, ThrownTypes}; - if (!ThrownTypes) { - Ops.pop_back(); - if (!TemplateParams) { - Ops.pop_back(); - if (!ContainingType) - Ops.pop_back(); - } - } - DEFINE_GETIMPL_STORE_N(DISubprogram, - (Line, ScopeLine, Virtuality, VirtualIndex, - ThisAdjustment, Flags, IsLocalToUnit, IsDefinition, - IsOptimized), - Ops, Ops.size()); + Metadata *Ops[] = {File, Scope, Name, Name, + LinkageName, Type, ContainingType, Unit, + TemplateParams, Declaration, Variables, ThrownTypes}; + DEFINE_GETIMPL_STORE(DISubprogram, (Line, ScopeLine, Virtuality, VirtualIndex, + ThisAdjustment, Flags, IsLocalToUnit, + IsDefinition, IsOptimized), + Ops); } bool DISubprogram::describes(const Function *F) const { diff --git a/tools/opt/BreakpointPrinter.cpp b/tools/opt/BreakpointPrinter.cpp index e5614ed061e..33b3edcd123 100644 --- a/tools/opt/BreakpointPrinter.cpp +++ b/tools/opt/BreakpointPrinter.cpp @@ -51,7 +51,7 @@ struct BreakpointPrinter : public ModulePass { if (!SP) continue; getContextName(SP->getScope().resolve(), Name); - Name = Name + SP->getName().str(); + Name = Name + SP->getDisplayName().str(); if (!Name.empty() && Processed.insert(Name).second) { Out << Name << "\n"; }