From: David Blaikie Date: Thu, 9 Oct 2014 20:26:15 +0000 (+0000) Subject: Sink DwarfDebug::createAndAddScopeChildren down into DwarfCompileUnit. X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=commitdiff_plain;h=db0ec65e79f7c8d0fdc4ad1d956dee611826ae7d Sink DwarfDebug::createAndAddScopeChildren down into DwarfCompileUnit. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219437 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp b/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp index 13bd12ee204..ec5c2ba399e 100644 --- a/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp @@ -599,8 +599,7 @@ void DwarfCompileUnit::constructSubprogramScopeDIE(LexicalScope *Scope) { // Collect lexical scope children first. // ObjectPointer might be a local (non-argument) local variable if it's a // block's synthetic this pointer. - if (DIE *BlockObjPtr = - DD->createAndAddScopeChildren(*this, Scope, ScopeDIE)) { + if (DIE *BlockObjPtr = createAndAddScopeChildren(Scope, ScopeDIE)) { assert(!ObjectPointer && "multiple object pointers can't be described"); ObjectPointer = BlockObjPtr; } @@ -609,4 +608,17 @@ void DwarfCompileUnit::constructSubprogramScopeDIE(LexicalScope *Scope) { addDIEEntry(ScopeDIE, dwarf::DW_AT_object_pointer, *ObjectPointer); } +DIE *DwarfCompileUnit::createAndAddScopeChildren(LexicalScope *Scope, + DIE &ScopeDIE) { + // We create children when the scope DIE is not null. + SmallVector, 8> Children; + DIE *ObjectPointer = createScopeChildrenDIE(Scope, Children); + + // Add children + for (auto &I : Children) + ScopeDIE.addChild(std::move(I)); + + return ObjectPointer; +} + } // end llvm namespace diff --git a/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h b/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h index fb6a867cc7d..9b97a51d371 100644 --- a/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h +++ b/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h @@ -118,6 +118,8 @@ public: /// \brief Construct a DIE for this subprogram scope. void constructSubprogramScopeDIE(LexicalScope *Scope); + + DIE *createAndAddScopeChildren(LexicalScope *Scope, DIE &ScopeDIE); }; } // end llvm namespace diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index 49afdf275e3..86fe1a9e704 100644 --- a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -330,19 +330,6 @@ bool DwarfDebug::isLexicalScopeDIENull(LexicalScope *Scope) { return !getLabelAfterInsn(Ranges.front().second); } -DIE *DwarfDebug::createAndAddScopeChildren(DwarfCompileUnit &TheCU, - LexicalScope *Scope, DIE &ScopeDIE) { - // We create children when the scope DIE is not null. - SmallVector, 8> Children; - DIE *ObjectPointer = TheCU.createScopeChildrenDIE(Scope, Children); - - // Add children - for (auto &I : Children) - ScopeDIE.addChild(std::move(I)); - - return ObjectPointer; -} - void DwarfDebug::constructAbstractSubprogramScopeDIE(DwarfCompileUnit &TheCU, LexicalScope *Scope) { assert(Scope && Scope->getScopeNode()); @@ -380,7 +367,7 @@ void DwarfDebug::constructAbstractSubprogramScopeDIE(DwarfCompileUnit &TheCU, if (TheCU.getCUNode().getEmissionKind() != DIBuilder::LineTablesOnly) SPCU.addUInt(*AbsDef, dwarf::DW_AT_inline, None, dwarf::DW_INL_inlined); - if (DIE *ObjectPointer = createAndAddScopeChildren(SPCU, Scope, *AbsDef)) + if (DIE *ObjectPointer = SPCU.createAndAddScopeChildren(Scope, *AbsDef)) SPCU.addDIEEntry(*AbsDef, dwarf::DW_AT_object_pointer, *ObjectPointer); } diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.h b/lib/CodeGen/AsmPrinter/DwarfDebug.h index 7d72602792f..7ee0bc7fe6a 100644 --- a/lib/CodeGen/AsmPrinter/DwarfDebug.h +++ b/lib/CodeGen/AsmPrinter/DwarfDebug.h @@ -682,9 +682,6 @@ public: SmallVector &getCurrentFnArguments() { return CurrentFnArguments; } - - DIE *createAndAddScopeChildren(DwarfCompileUnit &TheCU, LexicalScope *Scope, - DIE &ScopeDIE); }; } // End of namespace llvm