From 8c0fecc39fe7f0928a7592104b4419022ad4b54e Mon Sep 17 00:00:00 2001 From: David Blaikie Date: Thu, 14 Nov 2013 21:24:34 +0000 Subject: [PATCH] DwarfCompileUnit::getOrCreateContext: Return the compile unit DIE rather than null. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194728 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp b/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp index 9fd0f02f680..857b41415ab 100644 --- a/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp @@ -863,6 +863,8 @@ void CompileUnit::addTemplateParams(DIE &Buffer, DIArray TParams) { /// getOrCreateContextDIE - Get context owner's DIE. DIE *CompileUnit::getOrCreateContextDIE(DIScope Context) { + if (!Context || Context.isFile()) + return getCUDie(); if (Context.isType()) return getOrCreateTypeDIE(DIType(Context)); if (Context.isNameSpace()) @@ -882,8 +884,6 @@ DIE *CompileUnit::getOrCreateTypeDIE(const MDNode *TyNode) { // Construct the context before querying for the existence of the DIE in case // such construction creates the DIE. DIE *ContextDIE = getOrCreateContextDIE(resolve(Ty.getContext())); - if (!ContextDIE) - ContextDIE = CUDie.get(); DIE *TyDIE = getDIE(Ty); if (TyDIE) @@ -1355,10 +1355,6 @@ DIE *CompileUnit::getOrCreateNameSpace(DINameSpace NS) { // Construct the context before querying for the existence of the DIE in case // such construction creates the DIE. DIE *ContextDIE = getOrCreateContextDIE(NS.getContext()); - if (!ContextDIE) - // If the context is null, DIE should belong to the CU we call construct - // function on. - ContextDIE = CUDie.get(); DIE *NDie = getDIE(NS); if (NDie) @@ -1381,8 +1377,6 @@ DIE *CompileUnit::getOrCreateSubprogramDIE(DISubprogram SP) { // such construction creates the DIE (as is the case for member function // declarations). DIE *ContextDIE = getOrCreateContextDIE(resolve(SP.getContext())); - if (!ContextDIE) - ContextDIE = CUDie.get(); DIE *SPDie = getDIE(SP); if (SPDie) @@ -1541,8 +1535,6 @@ void CompileUnit::createGlobalVariableDIE(const MDNode *N) { // Construct the context before querying for the existence of the DIE in // case such construction creates the DIE. DIE *ContextDIE = getOrCreateContextDIE(GVContext); - if (!ContextDIE) - ContextDIE = CUDie.get(); // Add to map. VariableDIE = createAndAddDIE(GV.getTag(), *ContextDIE, N); @@ -1913,7 +1905,8 @@ DIE *CompileUnit::getOrCreateStaticMemberDIE(const DIDerivedType DT) { // Construct the context before querying for the existence of the DIE in case // such construction creates the DIE. DIE *ContextDIE = getOrCreateContextDIE(resolve(DT.getContext())); - assert(ContextDIE && "Static member should belong to a non-CU context."); + assert(dwarf::isType(ContextDIE->getTag()) && + "Static member should belong to a type."); DIE *StaticMemberDIE = getDIE(DT); if (StaticMemberDIE) -- 2.34.1