diff options
Diffstat (limited to 'lib/CodeGen/CGDebugInfo.cpp')
-rw-r--r-- | lib/CodeGen/CGDebugInfo.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/CodeGen/CGDebugInfo.cpp b/lib/CodeGen/CGDebugInfo.cpp index e1dca0e483..1bd0918f1a 100644 --- a/lib/CodeGen/CGDebugInfo.cpp +++ b/lib/CodeGen/CGDebugInfo.cpp @@ -752,10 +752,13 @@ llvm::DIType CGDebugInfo::getOrCreateType(QualType Ty, return llvm::DIType(); // Check for existing entry. - std::map<void *, llvm::AssertingVH<llvm::MDNode> >::iterator it = + std::map<void *, llvm::WeakVH>::iterator it = TypeCache.find(Ty.getAsOpaquePtr()); - if (it != TypeCache.end()) - return llvm::DIType(it->second); + if (it != TypeCache.end()) { + // Verify that the debug info still exists. + if (&*it->second) + return llvm::DIType(cast<llvm::MDNode>(it->second)); + } // Otherwise create the type. llvm::DIType Res = CreateTypeNode(Ty, Unit); |