diff options
| author | Manman Ren <manman.ren@gmail.com> | 2013-10-08 19:07:44 +0000 |
|---|---|---|
| committer | Manman Ren <manman.ren@gmail.com> | 2013-10-08 19:07:44 +0000 |
| commit | be5576f5f6b56d8e8d445d47cb5fcbe00cfca802 (patch) | |
| tree | 08aac894d71a2d20d8b4bc5a6201ce2db305df95 /llvm/lib/CodeGen | |
| parent | 852cc954db37fec8e169f954589bd2901f93e845 (diff) | |
| download | bcm5719-llvm-be5576f5f6b56d8e8d445d47cb5fcbe00cfca802.tar.gz bcm5719-llvm-be5576f5f6b56d8e8d445d47cb5fcbe00cfca802.zip | |
Add DbgVariable::resolve per Eric's suggestion.
llvm-svn: 192218
Diffstat (limited to 'llvm/lib/CodeGen')
| -rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp | 11 | ||||
| -rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h | 5 |
2 files changed, 14 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index 71838bdd694..cfe4ea6e3f4 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/llvm/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 <typename T> +T DbgVariable::resolve(DIRef<T> 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/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h index e8ca9d27834..6d22f272149 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h +++ b/llvm/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 <typename T> T resolve(DIRef<T> Ref) const; }; /// \brief Collects and handles information specific to a particular |

