forked from OSchip/llvm-project
Sink DwarfDebug::constructLexicalScopeDIE into DwarfCompileUnit
llvm-svn: 219414
This commit is contained in:
parent
a09bd0a15a
commit
0fbf8bdb08
|
@ -376,7 +376,7 @@ void DwarfCompileUnit::constructScopeDIE(
|
|||
std::make_move_iterator(Children.end()));
|
||||
return;
|
||||
}
|
||||
ScopeDIE = DD->constructLexicalScopeDIE(*this, Scope);
|
||||
ScopeDIE = constructLexicalScopeDIE(Scope);
|
||||
assert(ScopeDIE && "Scope DIE should not be null.");
|
||||
}
|
||||
|
||||
|
@ -461,4 +461,20 @@ DwarfCompileUnit::constructInlinedScopeDIE(LexicalScope *Scope) {
|
|||
return ScopeDIE;
|
||||
}
|
||||
|
||||
// Construct new DW_TAG_lexical_block for this scope and attach
|
||||
// DW_AT_low_pc/DW_AT_high_pc labels.
|
||||
std::unique_ptr<DIE>
|
||||
DwarfCompileUnit::constructLexicalScopeDIE(LexicalScope *Scope) {
|
||||
if (DD->isLexicalScopeDIENull(Scope))
|
||||
return nullptr;
|
||||
|
||||
auto ScopeDIE = make_unique<DIE>(dwarf::DW_TAG_lexical_block);
|
||||
if (Scope->isAbstractScope())
|
||||
return ScopeDIE;
|
||||
|
||||
attachRangesOrLowHighPC(*ScopeDIE, Scope->getRanges());
|
||||
|
||||
return ScopeDIE;
|
||||
}
|
||||
|
||||
} // end llvm namespace
|
||||
|
|
|
@ -93,6 +93,10 @@ public:
|
|||
/// \brief This scope represents inlined body of a function. Construct
|
||||
/// DIE to represent this concrete inlined copy of the function.
|
||||
std::unique_ptr<DIE> constructInlinedScopeDIE(LexicalScope *Scope);
|
||||
|
||||
/// \brief Construct new DW_TAG_lexical_block for this scope and
|
||||
/// attach DW_AT_low_pc/DW_AT_high_pc labels.
|
||||
std::unique_ptr<DIE> constructLexicalScopeDIE(LexicalScope *Scope);
|
||||
};
|
||||
|
||||
} // end llvm namespace
|
||||
|
|
|
@ -330,23 +330,6 @@ bool DwarfDebug::isLexicalScopeDIENull(LexicalScope *Scope) {
|
|||
return !getLabelAfterInsn(Ranges.front().second);
|
||||
}
|
||||
|
||||
// Construct new DW_TAG_lexical_block for this scope and attach
|
||||
// DW_AT_low_pc/DW_AT_high_pc labels.
|
||||
std::unique_ptr<DIE>
|
||||
DwarfDebug::constructLexicalScopeDIE(DwarfCompileUnit &TheCU,
|
||||
LexicalScope *Scope) {
|
||||
if (isLexicalScopeDIENull(Scope))
|
||||
return nullptr;
|
||||
|
||||
auto ScopeDIE = make_unique<DIE>(dwarf::DW_TAG_lexical_block);
|
||||
if (Scope->isAbstractScope())
|
||||
return ScopeDIE;
|
||||
|
||||
TheCU.attachRangesOrLowHighPC(*ScopeDIE, Scope->getRanges());
|
||||
|
||||
return ScopeDIE;
|
||||
}
|
||||
|
||||
static std::unique_ptr<DIE> constructVariableDIE(DwarfCompileUnit &TheCU,
|
||||
DbgVariable &DV,
|
||||
const LexicalScope &Scope,
|
||||
|
|
|
@ -675,11 +675,6 @@ public:
|
|||
|
||||
// FIXME: Sink these functions down into DwarfFile/Dwarf*Unit.
|
||||
|
||||
/// \brief Construct new DW_TAG_lexical_block for this scope and
|
||||
/// attach DW_AT_low_pc/DW_AT_high_pc labels.
|
||||
std::unique_ptr<DIE> constructLexicalScopeDIE(DwarfCompileUnit &TheCU,
|
||||
LexicalScope *Scope);
|
||||
|
||||
/// A helper function to create children of a Scope DIE.
|
||||
DIE *createScopeChildrenDIE(DwarfCompileUnit &TheCU, LexicalScope *Scope,
|
||||
SmallVectorImpl<std::unique_ptr<DIE>> &Children,
|
||||
|
|
Loading…
Reference in New Issue