1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 02:52:53 +02:00

Add DwarfUnit::addGlobalType to match DwarfUnit::addGlobalName

(these will shortly become virtual, with a null implementation in
DwarfUnit (since type units don't have accelerator tables in the current
schema) and the current implementation down in DwarfCompileUnit, moving
the actual maps there too)

llvm-svn: 221082
This commit is contained in:
David Blaikie 2014-11-02 06:06:14 +00:00
parent 67a64a5c44
commit 5e147c4bc9
2 changed files with 15 additions and 7 deletions

View File

@ -976,11 +976,9 @@ void DwarfUnit::updateAcceleratorTables(DIScope Context, DIType Ty,
unsigned Flags = IsImplementation ? dwarf::DW_FLAG_type_implementation : 0;
DD->addAccelType(Ty.getName(), TyDIE, Flags);
if ((!Context || Context.isCompileUnit() || Context.isFile() ||
Context.isNameSpace()) &&
getCUNode().getEmissionKind() != DIBuilder::LineTablesOnly)
GlobalTypes[getParentContextString(Context) + Ty.getName().str()] =
&TyDIE;
if (!Context || Context.isCompileUnit() || Context.isFile() ||
Context.isNameSpace())
addGlobalType(Ty, TyDIE, Context);
}
}
@ -1013,6 +1011,14 @@ void DwarfUnit::addGlobalName(StringRef Name, DIE &Die, DIScope Context) {
GlobalNames[FullName] = &Die;
}
/// Add a new global type to the unit.
void DwarfUnit::addGlobalType(DIType Ty, const DIE &Die, DIScope Context) {
if (getCUNode().getEmissionKind() == DIBuilder::LineTablesOnly)
return;
std::string FullName = getParentContextString(Context) + Ty.getName().str();
GlobalTypes[FullName] = &Die;
}
/// getParentContextString - Walks the metadata parent chain in a language
/// specific manner (using the compile unit language) and returns
/// it as a string. This is done at the metadata level because DIEs may

View File

@ -174,10 +174,12 @@ public:
/// context for a global name.
std::string getParentContextString(DIScope Context) const;
/// addGlobalName - Add a new global entity to the compile unit.
///
/// Add a new global name to the compile unit.
void addGlobalName(StringRef Name, DIE &Die, DIScope Context);
/// Add a new global type to the compile unit.
void addGlobalType(DIType Ty, const DIE &Die, DIScope Context);
/// addAccelNamespace - Add a new name to the namespace accelerator table.
void addAccelNamespace(StringRef Name, const DIE &Die);