From: David Blaikie Date: Sun, 2 Nov 2014 06:06:14 +0000 (+0000) Subject: Add DwarfUnit::addGlobalType to match DwarfUnit::addGlobalName X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=commitdiff_plain;h=5ede09079b160bc595e913af981cb5941060245f 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) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@221082 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/AsmPrinter/DwarfUnit.cpp b/lib/CodeGen/AsmPrinter/DwarfUnit.cpp index c49edd8daca..e523bb007bb 100644 --- a/lib/CodeGen/AsmPrinter/DwarfUnit.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfUnit.cpp @@ -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 diff --git a/lib/CodeGen/AsmPrinter/DwarfUnit.h b/lib/CodeGen/AsmPrinter/DwarfUnit.h index ce92b417536..fd3d6cb9ea6 100644 --- a/lib/CodeGen/AsmPrinter/DwarfUnit.h +++ b/lib/CodeGen/AsmPrinter/DwarfUnit.h @@ -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);