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