diff options
author | Eric Christopher <echristo@gmail.com> | 2013-10-05 00:27:02 +0000 |
---|---|---|
committer | Eric Christopher <echristo@gmail.com> | 2013-10-05 00:27:02 +0000 |
commit | eee74fbbb64e5a4fd3af90611128ded5d759c82f (patch) | |
tree | 4e4c9b2ce024e02729fb4c417a42183ac64cb690 | |
parent | eacbfd1d512b97b5551ce9f30bf85ba000d9da42 (diff) | |
download | external_llvm-eee74fbbb64e5a4fd3af90611128ded5d759c82f.zip external_llvm-eee74fbbb64e5a4fd3af90611128ded5d759c82f.tar.gz external_llvm-eee74fbbb64e5a4fd3af90611128ded5d759c82f.tar.bz2 |
Add a resolve method on CompileUnit that forwards to DwarfDebug.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192014 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp | 12 | ||||
-rw-r--r-- | lib/CodeGen/AsmPrinter/DwarfCompileUnit.h | 9 |
2 files changed, 13 insertions, 8 deletions
diff --git a/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp b/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp index 5e31cba..23e5641 100644 --- a/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp @@ -807,7 +807,7 @@ DIE *CompileUnit::getOrCreateTypeDIE(const MDNode *TyNode) { addAccelType(Ty.getName(), std::make_pair(TyDIE, Flags)); } - addToContextOwner(TyDIE, DD->resolve(Ty.getContext())); + addToContextOwner(TyDIE, resolve(Ty.getContext())); return TyDIE; } @@ -872,7 +872,7 @@ void CompileUnit::addGlobalName(StringRef Name, DIE *Die) { /// addGlobalType - Add a new global type to the compile unit. /// void CompileUnit::addGlobalType(DIType Ty) { - DIScope Context = DD->resolve(Ty.getContext()); + DIScope Context = resolve(Ty.getContext()); if (!Ty.getName().empty() && !Ty.isForwardDecl() && (!Context || Context.isCompileUnit() || Context.isFile() || Context.isNameSpace())) @@ -937,7 +937,7 @@ void CompileUnit::constructTypeDIE(DIE &Buffer, DIDerivedType DTy) { if (Tag == dwarf::DW_TAG_ptr_to_member_type) addDIEEntry(&Buffer, dwarf::DW_AT_containing_type, dwarf::DW_FORM_ref4, - getOrCreateTypeDIE(DD->resolve(DTy.getClassType()))); + getOrCreateTypeDIE(resolve(DTy.getClassType()))); // Add source line info if available and TyDesc is not a forward declaration. if (!DTy.isForwardDecl()) addSourceLine(&Buffer, DTy); @@ -1113,7 +1113,7 @@ void CompileUnit::constructTypeDIE(DIE &Buffer, DICompositeType CTy) { if (CTy.isAppleBlockExtension()) addFlag(&Buffer, dwarf::DW_AT_APPLE_block); - DICompositeType ContainingType(DD->resolve(CTy.getContainingType())); + DICompositeType ContainingType(resolve(CTy.getContainingType())); if (DIDescriptor(ContainingType).isCompositeType()) addDIEEntry(&Buffer, dwarf::DW_AT_containing_type, dwarf::DW_FORM_ref4, getOrCreateTypeDIE(DIType(ContainingType))); @@ -1325,7 +1325,7 @@ DIE *CompileUnit::getOrCreateSubprogramDIE(DISubprogram SP) { addUInt(Block, 0, dwarf::DW_FORM_udata, SP.getVirtualIndex()); addBlock(SPDie, dwarf::DW_AT_vtable_elem_location, 0, Block); ContainingTypeMap.insert(std::make_pair(SPDie, - DD->resolve(SP.getContainingType()))); + resolve(SP.getContainingType()))); } if (!SP.isDefinition()) { @@ -1409,7 +1409,7 @@ void CompileUnit::createGlobalVariableDIE(const MDNode *N) { // We need the declaration DIE that is in the static member's class. // But that class might not exist in the DWARF yet. // Creating the class will create the static member decl DIE. - getOrCreateContextDIE(DD->resolve(SDMDecl.getContext())); + getOrCreateContextDIE(resolve(SDMDecl.getContext())); VariableDIE = getDIE(SDMDecl); assert(VariableDIE && "Static member decl has no context?"); IsStaticMember = true; diff --git a/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h b/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h index 4cdd8fc..b3bf9be 100644 --- a/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h +++ b/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h @@ -15,6 +15,7 @@ #define CODEGEN_ASMPRINTER_DWARFCOMPILEUNIT_H #include "DIE.h" +#include "DwarfDebug.h" #include "llvm/ADT/DenseMap.h" #include "llvm/ADT/OwningPtr.h" #include "llvm/ADT/StringMap.h" @@ -23,8 +24,6 @@ namespace llvm { -class DwarfDebug; -class DwarfUnits; class MachineLocation; class MachineOperand; class ConstantInt; @@ -353,6 +352,12 @@ private: /// information entry. DIEEntry *createDIEEntry(DIE *Entry); + /// resolve - Look in the DwarfDebug map for the MDNode that + /// corresponds to a scope reference. + template <typename T> T resolve(DIRef<T> Ref) const { + return DD->resolve(Ref); + } + private: // DIEValueAllocator - All DIEValues are allocated through this allocator. |