Fix rdar://6880951 by rejecting vectors of vectors.

It seems dubious to me that isIntegerType() returns true for
vectors of integers, but not complex integers.  This should 
probably be rethought, I'll file a bugzilla.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71640 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2009-05-13 05:13:44 +00:00
Родитель 8f12f65fad
Коммит 82afa2d97d
2 изменённых файлов: 6 добавлений и 2 удалений

Просмотреть файл

@ -221,8 +221,9 @@ static void HandleVectorSizeAttr(Decl *D, const AttributeList &Attr, Sema &S) {
canonType->isFunctionType());
*/
}
// the base type must be integer or float.
if (!CurType->isIntegerType() && !CurType->isRealFloatingType()) {
// the base type must be integer or float, and can't already be a vector.
if (CurType->isVectorType() ||
(!CurType->isIntegerType() && !CurType->isRealFloatingType())) {
S.Diag(Attr.getLoc(), diag::err_attribute_invalid_vector_type) << CurType;
return;
}

Просмотреть файл

@ -34,3 +34,6 @@ int j[42]; // expected-error {{redefinition of 'j' with a different type}}
// rdar://6880104
_Decimal32 x; // expected-error {{GNU decimal type extension not supported}}
// rdar://6880951
int __attribute__ ((vector_size (8), vector_size (8))) v; // expected-error {{invalid vector type}}