aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Christopher <echristo@gmail.com>2013-10-05 00:27:02 +0000
committerEric Christopher <echristo@gmail.com>2013-10-05 00:27:02 +0000
commiteee74fbbb64e5a4fd3af90611128ded5d759c82f (patch)
tree4e4c9b2ce024e02729fb4c417a42183ac64cb690
parenteacbfd1d512b97b5551ce9f30bf85ba000d9da42 (diff)
downloadexternal_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.cpp12
-rw-r--r--lib/CodeGen/AsmPrinter/DwarfCompileUnit.h9
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.