"__block attribute not allowed, only allowed on local variables">;
def err_block_on_vm : Error<
"__block attribute not allowed on declaration with a variably modified type">;
+def err_sizeless_nonlocal : Error<
+ "non-local variable with sizeless type %0">;
def err_vec_builtin_non_vector : Error<
"first two arguments to %0 must be vectors">;
return;
}
+ if (!NewVD->hasLocalStorage() && T->isSizelessType()) {
+ Diag(NewVD->getLocation(), diag::err_sizeless_nonlocal) << T;
+ NewVD->setInvalidDecl();
+ return;
+ }
+
if (isVM && NewVD->hasAttr<BlocksAttr>()) {
Diag(NewVD->getLocation(), diag::err_block_on_vm);
NewVD->setInvalidDecl();
typedef __SVInt8_t svint8_t;
typedef __SVInt16_t svint16_t;
+svint8_t global_int8; // expected-error {{non-local variable with sizeless type 'svint8_t'}}
+extern svint8_t extern_int8; // expected-error {{non-local variable with sizeless type 'svint8_t'}}
+static svint8_t static_int8; // expected-error {{non-local variable with sizeless type 'svint8_t'}}
+__thread svint8_t thread_int8; // expected-error {{non-local variable with sizeless type 'svint8_t'}}
svint8_t *global_int8_ptr;
extern svint8_t *extern_int8_ptr;
static svint8_t *static_int8_ptr;
struct incomplete_struct *incomplete_ptr;
void func(int sel) {
+ static svint8_t static_int8; // expected-error {{non-local variable with sizeless type 'svint8_t'}}
+
svint8_t local_int8;
svint16_t local_int16;
typedef __SVInt8_t svint8_t;
typedef __SVInt16_t svint16_t;
+svint8_t global_int8; // expected-error {{non-local variable with sizeless type 'svint8_t'}}
+extern svint8_t extern_int8; // expected-error {{non-local variable with sizeless type 'svint8_t'}}
+static svint8_t static_int8; // expected-error {{non-local variable with sizeless type 'svint8_t'}}
+__thread svint8_t thread_int8; // expected-error {{non-local variable with sizeless type 'svint8_t'}}
svint8_t *global_int8_ptr;
extern svint8_t *extern_int8_ptr;
static svint8_t *static_int8_ptr;
struct incomplete_struct *incomplete_ptr;
void func(int sel) {
+ static svint8_t static_int8; // expected-error {{non-local variable with sizeless type 'svint8_t'}}
+
svint8_t local_int8;
svint16_t local_int16;