From: Manman Ren Date: Tue, 8 Oct 2013 19:07:44 +0000 (+0000) Subject: Add DbgVariable::resolve per Eric's suggestion. X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=8199f0bc7722a4d93099cafdb30fa465a2746ce8;p=oota-llvm.git Add DbgVariable::resolve per Eric's suggestion. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192218 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index 71838bdd694..cfe4ea6e3f4 100644 --- a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -116,6 +116,13 @@ static const unsigned InitAbbreviationsSetSize = 9; // log2(512) namespace llvm { +/// resolve - Look in the DwarfDebug map for the MDNode that +/// corresponds to the reference. +template +T DbgVariable::resolve(DIRef Ref) const { + return DD->resolve(Ref); +} + DIType DbgVariable::getType() const { DIType Ty = Var.getType(); // FIXME: isBlockByrefVariable should be reformulated in terms of complex @@ -149,13 +156,13 @@ DIType DbgVariable::getType() const { uint16_t tag = Ty.getTag(); if (tag == dwarf::DW_TAG_pointer_type) - subType = DD->resolve(DIDerivedType(Ty).getTypeDerivedFrom()); + subType = resolve(DIDerivedType(Ty).getTypeDerivedFrom()); DIArray Elements = DICompositeType(subType).getTypeArray(); for (unsigned i = 0, N = Elements.getNumElements(); i < N; ++i) { DIDerivedType DT = DIDerivedType(Elements.getElement(i)); if (getName() == DT.getName()) - return (DD->resolve(DT.getTypeDerivedFrom())); + return (resolve(DT.getTypeDerivedFrom())); } } return Ty; diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.h b/lib/CodeGen/AsmPrinter/DwarfDebug.h index e8ca9d27834..6d22f272149 100644 --- a/lib/CodeGen/AsmPrinter/DwarfDebug.h +++ b/lib/CodeGen/AsmPrinter/DwarfDebug.h @@ -209,6 +209,11 @@ public: return Var.getAddrElement(i); } DIType getType() const; + +private: + /// resolve - Look in the DwarfDebug map for the MDNode that + /// corresponds to the reference. + template T resolve(DIRef Ref) const; }; /// \brief Collects and handles information specific to a particular