From 87356edf7422426df490c7548112649fb317549f Mon Sep 17 00:00:00 2001 From: "Duncan P. N. Exon Smith" Date: Wed, 18 Feb 2015 20:30:45 +0000 Subject: [PATCH] IR: Drop the scope in DI template parameters The scope/context is always the compile unit, which we replace with `nullptr` anyway (via `getNonCompileUnitScope()`). Drop it explicitly. I noticed this field was always null while writing testcase upgrade scripts to transition to the new hierarchy. Seems wasteful to transition it over if it's already out-of-use. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@229740 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/IR/DebugInfo.h | 2 -- lib/IR/DIBuilder.cpp | 10 ++++++---- lib/IR/DebugInfo.cpp | 2 -- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/include/llvm/IR/DebugInfo.h b/include/llvm/IR/DebugInfo.h index 44c9ddf803b..d31f107d913 100644 --- a/include/llvm/IR/DebugInfo.h +++ b/include/llvm/IR/DebugInfo.h @@ -732,7 +732,6 @@ public: StringRef getName() const { return getHeaderField(1); } - DIScopeRef getContext() const { return getFieldAs(1); } DITypeRef getType() const { return getFieldAs(2); } bool Verify() const; }; @@ -745,7 +744,6 @@ public: StringRef getName() const { return getHeaderField(1); } - DIScopeRef getContext() const { return getFieldAs(1); } DITypeRef getType() const { return getFieldAs(2); } Metadata *getValue() const; bool Verify() const; diff --git a/lib/IR/DIBuilder.cpp b/lib/IR/DIBuilder.cpp index f193e5331dd..2cb27cae144 100644 --- a/lib/IR/DIBuilder.cpp +++ b/lib/IR/DIBuilder.cpp @@ -503,13 +503,14 @@ DIBuilder::createObjCProperty(StringRef Name, DIFile File, unsigned LineNumber, DITemplateTypeParameter DIBuilder::createTemplateTypeParameter(DIDescriptor Context, StringRef Name, DIType Ty) { + assert(!DIScope(getNonCompileUnitScope(Context)).getRef() && + "Expected compile unit"); Metadata *Elts[] = {HeaderBuilder::get(dwarf::DW_TAG_template_type_parameter) .concat(Name) .concat(0) .concat(0) .get(VMContext), - DIScope(getNonCompileUnitScope(Context)).getRef(), - Ty.getRef(), nullptr}; + nullptr, Ty.getRef(), nullptr}; return DITemplateTypeParameter(MDNode::get(VMContext, Elts)); } @@ -517,10 +518,11 @@ static DITemplateValueParameter createTemplateValueParameterHelper(LLVMContext &VMContext, unsigned Tag, DIDescriptor Context, StringRef Name, DIType Ty, Metadata *MD) { + assert(!DIScope(getNonCompileUnitScope(Context)).getRef() && + "Expected compile unit"); Metadata *Elts[] = { HeaderBuilder::get(Tag).concat(Name).concat(0).concat(0).get(VMContext), - DIScope(getNonCompileUnitScope(Context)).getRef(), Ty.getRef(), MD, - nullptr}; + nullptr, Ty.getRef(), MD, nullptr}; return DITemplateValueParameter(MDNode::get(VMContext, Elts)); } diff --git a/lib/IR/DebugInfo.cpp b/lib/IR/DebugInfo.cpp index 92d7e4590a9..f682ad548f2 100644 --- a/lib/IR/DebugInfo.cpp +++ b/lib/IR/DebugInfo.cpp @@ -1117,11 +1117,9 @@ void DebugInfoFinder::processSubprogram(DISubprogram SP) { DIDescriptor Element = TParams.getElement(I); if (Element.isTemplateTypeParameter()) { DITemplateTypeParameter TType(Element); - processScope(TType.getContext().resolve(TypeIdentifierMap)); processType(TType.getType().resolve(TypeIdentifierMap)); } else if (Element.isTemplateValueParameter()) { DITemplateValueParameter TVal(Element); - processScope(TVal.getContext().resolve(TypeIdentifierMap)); processType(TVal.getType().resolve(TypeIdentifierMap)); } } -- 2.34.1