mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-09-11 08:29:25 +00:00
Refactor constructImportedEntityDIE(DwarfUnit, DIImportedEntity) to return a DIE rather than inserting it into a specified context.
First of many steps to improve lexical scope construction (to omit trivial lexical scopes - those without any direct variables). To that end it's easier not to create imported entities directly into the lexical scope node, but to build them, then add them if necessary. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@216838 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -688,22 +688,23 @@ void DwarfDebug::constructImportedEntityDIE(DwarfCompileUnit &TheCU,
|
||||
DIImportedEntity Module(N);
|
||||
assert(Module.Verify());
|
||||
if (DIE *D = TheCU.getOrCreateContextDIE(Module.getContext()))
|
||||
constructImportedEntityDIE(TheCU, Module, *D);
|
||||
D->addChild(constructImportedEntityDIE(TheCU, Module));
|
||||
}
|
||||
|
||||
void DwarfDebug::constructImportedEntityDIE(DwarfCompileUnit &TheCU,
|
||||
const MDNode *N, DIE &Context) {
|
||||
DIImportedEntity Module(N);
|
||||
assert(Module.Verify());
|
||||
return constructImportedEntityDIE(TheCU, Module, Context);
|
||||
Context.addChild(constructImportedEntityDIE(TheCU, Module));
|
||||
}
|
||||
|
||||
void DwarfDebug::constructImportedEntityDIE(DwarfCompileUnit &TheCU,
|
||||
const DIImportedEntity &Module,
|
||||
DIE &Context) {
|
||||
std::unique_ptr<DIE>
|
||||
DwarfDebug::constructImportedEntityDIE(DwarfCompileUnit &TheCU,
|
||||
const DIImportedEntity &Module) {
|
||||
assert(Module.Verify() &&
|
||||
"Use one of the MDNode * overloads to handle invalid metadata");
|
||||
DIE &IMDie = TheCU.createAndAddDIE(Module.getTag(), Context, Module);
|
||||
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())
|
||||
@@ -714,13 +715,16 @@ void DwarfDebug::constructImportedEntityDIE(DwarfCompileUnit &TheCU,
|
||||
EntityDie = TheCU.getOrCreateTypeDIE(DIType(Entity));
|
||||
else
|
||||
EntityDie = TheCU.getDIE(Entity);
|
||||
TheCU.addSourceLine(IMDie, Module.getLineNumber(),
|
||||
assert(EntityDie);
|
||||
TheCU.addSourceLine(*IMDie, Module.getLineNumber(),
|
||||
Module.getContext().getFilename(),
|
||||
Module.getContext().getDirectory());
|
||||
TheCU.addDIEEntry(IMDie, dwarf::DW_AT_import, *EntityDie);
|
||||
TheCU.addDIEEntry(*IMDie, dwarf::DW_AT_import, *EntityDie);
|
||||
StringRef Name = Module.getName();
|
||||
if (!Name.empty())
|
||||
TheCU.addString(IMDie, dwarf::DW_AT_name, Name);
|
||||
TheCU.addString(*IMDie, dwarf::DW_AT_name, Name);
|
||||
|
||||
return IMDie;
|
||||
}
|
||||
|
||||
// Emit all Dwarf sections that should come prior to the content. Create
|
||||
|
Reference in New Issue
Block a user