Do not try calculate the size of forward-declared template type array.

llvm-svn: 128725
This commit is contained in:
Devang Patel 2011-04-01 19:02:33 +00:00
parent e625ba46b7
commit 1ffe23464a
2 changed files with 18 additions and 0 deletions

View File

@ -1226,6 +1226,14 @@ llvm::DIType CGDebugInfo::CreateType(const ArrayType *Ty,
} else if (Ty->isIncompleteArrayType()) {
Size = 0;
Align = CGM.getContext().getTypeAlign(Ty->getElementType());
} else if (Ty->isDependentSizedArrayType()) {
Size = 0;
Align = 0;
} else if (Ty->getElementType()->getTypeClass()
== Type::TemplateSpecialization) {
// FIXME : Emit appropriate element type info.
Size = 0;
Align = 0;
} else {
// Size and align of the whole array, not the element type.
Size = CGM.getContext().getTypeSize(Ty);

View File

@ -20,3 +20,13 @@ class TU {
};
TU<2> u2;
// PR9600
template<typename T> class vector {};
class Foo;
typedef vector<Foo*> FooVector[3];
struct Test {
virtual void foo(FooVector *);
};
static Test test;