diff options
author | Eric Christopher <echristo@gmail.com> | 2013-10-04 23:35:30 +0000 |
---|---|---|
committer | Eric Christopher <echristo@gmail.com> | 2013-10-04 23:35:30 +0000 |
commit | 164793918c325b25425f962fc9540a1e1cd9224b (patch) | |
tree | 489c3fa3d8a8d7531e8816314c730cc9f74592d0 /include | |
parent | 916d49e77237c5aabfd5638b4e481c7ed9441608 (diff) | |
download | external_llvm-164793918c325b25425f962fc9540a1e1cd9224b.zip external_llvm-164793918c325b25425f962fc9540a1e1cd9224b.tar.gz external_llvm-164793918c325b25425f962fc9540a1e1cd9224b.tar.bz2 |
Pull this out for a bit of readability.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191999 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r-- | include/llvm/DebugInfo.h | 33 |
1 files changed, 18 insertions, 15 deletions
diff --git a/include/llvm/DebugInfo.h b/include/llvm/DebugInfo.h index 8486b10..ad01494 100644 --- a/include/llvm/DebugInfo.h +++ b/include/llvm/DebugInfo.h @@ -226,24 +226,27 @@ template <typename T> class DIRef { explicit DIRef(const Value *V); public: - T resolve(const DITypeIdentifierMap &Map) const { - if (!Val) - return T(); - - if (const MDNode *MD = dyn_cast<MDNode>(Val)) - return T(MD); - - const MDString *MS = cast<MDString>(Val); - // Find the corresponding MDNode. - DITypeIdentifierMap::const_iterator Iter = Map.find(MS); - assert(Iter != Map.end() && "Identifier not in the type map?"); - assert(DIDescriptor(Iter->second).isType() && - "MDNode in DITypeIdentifierMap should be a DIType."); - return T(Iter->second); - } + T resolve(const DITypeIdentifierMap &Map) const; operator Value *() const { return const_cast<Value *>(Val); } }; +template <typename T> +T DIRef<T>::resolve(const DITypeIdentifierMap &Map) const { + if (!Val) + return T(); + + if (const MDNode *MD = dyn_cast<MDNode>(Val)) + return T(MD); + + const MDString *MS = cast<MDString>(Val); + // Find the corresponding MDNode. + DITypeIdentifierMap::const_iterator Iter = Map.find(MS); + assert(Iter != Map.end() && "Identifier not in the type map?"); + assert(DIDescriptor(Iter->second).isType() && + "MDNode in DITypeIdentifierMap should be a DIType."); + return T(Iter->second); +} + /// Specialize getFieldAs to handle fields that are references to DIScopes. template <> DIScopeRef DIDescriptor::getFieldAs<DIScopeRef>(unsigned Elt) const; /// Specialize DIRef constructor for DIScopeRef. |