mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-10 18:34:09 +00:00
DebugInfo: Sink constructImportedEntityDIE down into DwarfUnit from DwarfDebug.
It was just calling a bunch of DwarfUnit functions anyway, as can be seen by the simplification of removing "TheCU" from all the function calls in the implementation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219103 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f2eddd6694
commit
d53f7f4b22
@ -595,7 +595,7 @@ void DwarfDebug::constructScopeDIE(
|
|||||||
for (ImportedEntityMap::const_iterator i = Range.first; i != Range.second;
|
for (ImportedEntityMap::const_iterator i = Range.first; i != Range.second;
|
||||||
++i)
|
++i)
|
||||||
Children.push_back(
|
Children.push_back(
|
||||||
constructImportedEntityDIE(TheCU, DIImportedEntity(i->second)));
|
TheCU.constructImportedEntityDIE(DIImportedEntity(i->second)));
|
||||||
// If there are only other scopes as children, put them directly in the
|
// If there are only other scopes as children, put them directly in the
|
||||||
// parent instead, as this scope would serve no purpose.
|
// parent instead, as this scope would serve no purpose.
|
||||||
if (Children.size() == ChildScopeCount) {
|
if (Children.size() == ChildScopeCount) {
|
||||||
@ -690,36 +690,7 @@ void DwarfDebug::constructAndAddImportedEntityDIE(DwarfCompileUnit &TheCU,
|
|||||||
DIImportedEntity Module(N);
|
DIImportedEntity Module(N);
|
||||||
assert(Module.Verify());
|
assert(Module.Verify());
|
||||||
if (DIE *D = TheCU.getOrCreateContextDIE(Module.getContext()))
|
if (DIE *D = TheCU.getOrCreateContextDIE(Module.getContext()))
|
||||||
D->addChild(constructImportedEntityDIE(TheCU, Module));
|
D->addChild(TheCU.constructImportedEntityDIE(Module));
|
||||||
}
|
|
||||||
|
|
||||||
std::unique_ptr<DIE>
|
|
||||||
DwarfDebug::constructImportedEntityDIE(DwarfCompileUnit &TheCU,
|
|
||||||
const DIImportedEntity &Module) {
|
|
||||||
assert(Module.Verify() &&
|
|
||||||
"Use one of the MDNode * overloads to handle invalid metadata");
|
|
||||||
std::unique_ptr<DIE> IMDie = make_unique<DIE>((dwarf::Tag)Module.getTag());
|
|
||||||
TheCU.insertDIE(Module, IMDie.get());
|
|
||||||
DIE *EntityDie;
|
|
||||||
DIDescriptor Entity = resolve(Module.getEntity());
|
|
||||||
if (Entity.isNameSpace())
|
|
||||||
EntityDie = TheCU.getOrCreateNameSpace(DINameSpace(Entity));
|
|
||||||
else if (Entity.isSubprogram())
|
|
||||||
EntityDie = TheCU.getOrCreateSubprogramDIE(DISubprogram(Entity));
|
|
||||||
else if (Entity.isType())
|
|
||||||
EntityDie = TheCU.getOrCreateTypeDIE(DIType(Entity));
|
|
||||||
else
|
|
||||||
EntityDie = TheCU.getDIE(Entity);
|
|
||||||
assert(EntityDie);
|
|
||||||
TheCU.addSourceLine(*IMDie, Module.getLineNumber(),
|
|
||||||
Module.getContext().getFilename(),
|
|
||||||
Module.getContext().getDirectory());
|
|
||||||
TheCU.addDIEEntry(*IMDie, dwarf::DW_AT_import, *EntityDie);
|
|
||||||
StringRef Name = Module.getName();
|
|
||||||
if (!Name.empty())
|
|
||||||
TheCU.addString(*IMDie, dwarf::DW_AT_name, Name);
|
|
||||||
|
|
||||||
return IMDie;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Emit all Dwarf sections that should come prior to the content. Create
|
// Emit all Dwarf sections that should come prior to the content. Create
|
||||||
|
@ -508,11 +508,6 @@ class DwarfDebug : public AsmPrinterHandler {
|
|||||||
void constructAndAddImportedEntityDIE(DwarfCompileUnit &TheCU,
|
void constructAndAddImportedEntityDIE(DwarfCompileUnit &TheCU,
|
||||||
const MDNode *N);
|
const MDNode *N);
|
||||||
|
|
||||||
/// \brief Construct import_module DIE.
|
|
||||||
std::unique_ptr<DIE>
|
|
||||||
constructImportedEntityDIE(DwarfCompileUnit &TheCU,
|
|
||||||
const DIImportedEntity &Module);
|
|
||||||
|
|
||||||
/// \brief Register a source line with debug info. Returns the unique
|
/// \brief Register a source line with debug info. Returns the unique
|
||||||
/// label that was emitted and which provides correspondence to the
|
/// label that was emitted and which provides correspondence to the
|
||||||
/// source line list.
|
/// source line list.
|
||||||
|
@ -1139,6 +1139,34 @@ void DwarfUnit::constructSubprogramArguments(DIE &Buffer, DITypeArray Args) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::unique_ptr<DIE>
|
||||||
|
DwarfUnit::constructImportedEntityDIE(const DIImportedEntity &Module) {
|
||||||
|
assert(Module.Verify() &&
|
||||||
|
"Use one of the MDNode * overloads to handle invalid metadata");
|
||||||
|
std::unique_ptr<DIE> IMDie = make_unique<DIE>((dwarf::Tag)Module.getTag());
|
||||||
|
insertDIE(Module, IMDie.get());
|
||||||
|
DIE *EntityDie;
|
||||||
|
DIDescriptor Entity = resolve(Module.getEntity());
|
||||||
|
if (Entity.isNameSpace())
|
||||||
|
EntityDie = getOrCreateNameSpace(DINameSpace(Entity));
|
||||||
|
else if (Entity.isSubprogram())
|
||||||
|
EntityDie = getOrCreateSubprogramDIE(DISubprogram(Entity));
|
||||||
|
else if (Entity.isType())
|
||||||
|
EntityDie = getOrCreateTypeDIE(DIType(Entity));
|
||||||
|
else
|
||||||
|
EntityDie = getDIE(Entity);
|
||||||
|
assert(EntityDie);
|
||||||
|
addSourceLine(*IMDie, Module.getLineNumber(),
|
||||||
|
Module.getContext().getFilename(),
|
||||||
|
Module.getContext().getDirectory());
|
||||||
|
addDIEEntry(*IMDie, dwarf::DW_AT_import, *EntityDie);
|
||||||
|
StringRef Name = Module.getName();
|
||||||
|
if (!Name.empty())
|
||||||
|
addString(*IMDie, dwarf::DW_AT_name, Name);
|
||||||
|
|
||||||
|
return IMDie;
|
||||||
|
}
|
||||||
|
|
||||||
/// constructTypeDIE - Construct type DIE from DICompositeType.
|
/// constructTypeDIE - Construct type DIE from DICompositeType.
|
||||||
void DwarfUnit::constructTypeDIE(DIE &Buffer, DICompositeType CTy) {
|
void DwarfUnit::constructTypeDIE(DIE &Buffer, DICompositeType CTy) {
|
||||||
// Add name if not anonymous or intermediate type.
|
// Add name if not anonymous or intermediate type.
|
||||||
|
@ -424,6 +424,10 @@ public:
|
|||||||
/// constructSubprogramArguments - Construct function argument DIEs.
|
/// constructSubprogramArguments - Construct function argument DIEs.
|
||||||
void constructSubprogramArguments(DIE &Buffer, DITypeArray Args);
|
void constructSubprogramArguments(DIE &Buffer, DITypeArray Args);
|
||||||
|
|
||||||
|
/// \brief Construct import_module DIE.
|
||||||
|
std::unique_ptr<DIE>
|
||||||
|
constructImportedEntityDIE(const DIImportedEntity &Module);
|
||||||
|
|
||||||
/// Create a DIE with the given Tag, add the DIE to its parent, and
|
/// Create a DIE with the given Tag, add the DIE to its parent, and
|
||||||
/// call insertDIE if MD is not null.
|
/// call insertDIE if MD is not null.
|
||||||
DIE &createAndAddDIE(unsigned Tag, DIE &Parent,
|
DIE &createAndAddDIE(unsigned Tag, DIE &Parent,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user