From 153cd65fd46ffdcd416b64f7ec51dff808fc453f Mon Sep 17 00:00:00 2001 From: David Blaikie Date: Sat, 1 Nov 2014 17:21:26 +0000 Subject: [PATCH] Sink DwarfDebug::AbstractSPDies down into DwarfFile This is the first big step to allowing gmlt-like inline scope information in the skeleton CU. While this commit doesn't change the functionality, it's only a small step to call "constructAbstractSubprogramDIE" on both the InfoHolder and the SkeletonHolder (when in use) and that will at least create the abstract SP dies in that case, though still not creating the other subprograms. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@221051 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp | 8 ++++---- lib/CodeGen/AsmPrinter/DwarfDebug.h | 7 ------- lib/CodeGen/AsmPrinter/DwarfFile.h | 7 +++++++ 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp b/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp index bd63279f2fc..6571b54cfcf 100644 --- a/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp @@ -416,7 +416,7 @@ DwarfCompileUnit::constructInlinedScopeDIE(LexicalScope *Scope) { DISubprogram InlinedSP = getDISubprogram(DS); // Find the subprogram's DwarfCompileUnit in the SPMap in case the subprogram // was inlined from another compile unit. - DIE *OriginDIE = DD->getAbstractSPDies()[InlinedSP]; + DIE *OriginDIE = DU->getAbstractSPDies()[InlinedSP]; assert(OriginDIE && "Unable to find original DIE for an inlined subprogram."); auto ScopeDIE = make_unique(dwarf::DW_TAG_inlined_subroutine); @@ -588,7 +588,7 @@ DIE *DwarfCompileUnit::createAndAddScopeChildren(LexicalScope *Scope, void DwarfCompileUnit::constructAbstractSubprogramScopeDIE(LexicalScope *Scope) { - DIE *&AbsDef = DD->getAbstractSPDies()[Scope->getScopeNode()]; + DIE *&AbsDef = DU->getAbstractSPDies()[Scope->getScopeNode()]; if (AbsDef) return; @@ -648,7 +648,7 @@ DwarfCompileUnit::constructImportedEntityDIE(const DIImportedEntity &Module) { void DwarfCompileUnit::finishSubprogramDefinition(DISubprogram SP) { DIE *D = getDIE(SP); - if (DIE *AbsSPDIE = DD->getAbstractSPDies().lookup(SP)) { + if (DIE *AbsSPDIE = DU->getAbstractSPDies().lookup(SP)) { if (D) // If this subprogram has an abstract definition, reference that addDIEEntry(*D, dwarf::DW_AT_abstract_origin, *AbsSPDIE); @@ -671,7 +671,7 @@ void DwarfCompileUnit::collectDeadVariables(DISubprogram SP) { if (Variables.getNumElements() == 0) return; - DIE *SPDIE = DD->getAbstractSPDies().lookup(SP); + DIE *SPDIE = DU->getAbstractSPDies().lookup(SP); if (!SPDIE) SPDIE = getDIE(SP); assert(SPDIE); diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.h b/lib/CodeGen/AsmPrinter/DwarfDebug.h index c1215c046f7..849580af7aa 100644 --- a/lib/CodeGen/AsmPrinter/DwarfDebug.h +++ b/lib/CodeGen/AsmPrinter/DwarfDebug.h @@ -190,9 +190,6 @@ class DwarfDebug : public AsmPrinterHandler { LexicalScopes LScopes; - // Collection of abstract subprogram DIEs. - DenseMap AbstractSPDies; - // Collection of abstract variables. DenseMap> AbstractVariables; SmallVector, 64> ConcreteVariables; @@ -650,10 +647,6 @@ public: // FIXME: Sink these functions down into DwarfFile/Dwarf*Unit. - DenseMap &getAbstractSPDies() { - return AbstractSPDies; - } - SmallPtrSet &getProcessedSPNodes() { return ProcessedSPNodes; } diff --git a/lib/CodeGen/AsmPrinter/DwarfFile.h b/lib/CodeGen/AsmPrinter/DwarfFile.h index e4dc674bb69..40454cec3f4 100644 --- a/lib/CodeGen/AsmPrinter/DwarfFile.h +++ b/lib/CodeGen/AsmPrinter/DwarfFile.h @@ -54,6 +54,9 @@ class DwarfFile { // Collection of dbg variables of a scope. DenseMap> ScopeVariables; + // Collection of abstract subprogram DIEs. + DenseMap AbstractSPDies; + public: DwarfFile(AsmPrinter *AP, DwarfDebug &DD, StringRef Pref, BumpPtrAllocator &DA); @@ -93,6 +96,10 @@ public: DenseMap> &getScopeVariables() { return ScopeVariables; } + + DenseMap &getAbstractSPDies() { + return AbstractSPDies; + } }; } #endif -- 2.34.1