PR16214: Debug info for types first used via pointers or qualified types & later require definitions
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184594 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/CGDebugInfo.cpp b/lib/CodeGen/CGDebugInfo.cpp
index b2f3120..58e492e 100644
--- a/lib/CodeGen/CGDebugInfo.cpp
+++ b/lib/CodeGen/CGDebugInfo.cpp
@@ -1951,8 +1951,15 @@
llvm::DIType T = getCompletedTypeOrNull(Ty);
- if (T.Verify())
+ if (T.Verify()) {
+ // If we're looking for a definition, make sure we have definitions of any
+ // underlying types.
+ if (const TypedefType* TTy = dyn_cast<TypedefType>(Ty))
+ getOrCreateType(TTy->getDecl()->getUnderlyingType(), Unit, Declaration);
+ if (Ty.hasLocalQualifiers())
+ getOrCreateType(QualType(Ty.getTypePtr(), 0), Unit, Declaration);
return T;
+ }
// Otherwise create the type.
llvm::DIType Res = CreateTypeNode(Ty, Unit, Declaration);