]> granicus.if.org Git - clang/commitdiff
Incomplete type does not have any size.
authorDevang Patel <dpatel@apple.com>
Mon, 4 Apr 2011 23:18:38 +0000 (23:18 +0000)
committerDevang Patel <dpatel@apple.com>
Mon, 4 Apr 2011 23:18:38 +0000 (23:18 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128855 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGDebugInfo.cpp
test/CodeGenCXX/debug-info-template.cpp

index c7a50efcd8bf4d807ed3617db6542f3632cca133..cf147502c5cc6c1cf6974cea4ff59d1abfadf279 100644 (file)
@@ -1226,7 +1226,7 @@ llvm::DIType CGDebugInfo::CreateType(const ArrayType *Ty,
   } else if (Ty->isIncompleteArrayType()) {
     Size = 0;
     Align = CGM.getContext().getTypeAlign(Ty->getElementType());
-  } else if (Ty->isDependentSizedArrayType()) {
+  } else if (Ty->isDependentSizedArrayType() || Ty->isIncompleteType()) {
     Size = 0;
     Align = 0;
   } else if (Ty->getElementType()->getTypeClass() 
index 8560c5a8e9bcb92ca99b2ec0bb13a230c01111fd..9d52159bed84763d4b80b51af9604594dc213353 100644 (file)
@@ -30,3 +30,17 @@ struct Test {
 };
 static Test test;
 
+// PR9608
+template <int i> struct TheTemplate {
+  struct Empty2 {}; 
+  typedef const Empty2 DependentType[i]; 
+  TheTemplate() {} 
+}; 
+
+class TheTemplateTest : public TheTemplate<42> { 
+  TheTemplateTest(); 
+  void method(const TheTemplate<42>::DependentType *) {} 
+}; 
+
+TheTemplateTest::TheTemplateTest() : TheTemplate<42>() {} 
+