// RUN: %clang_cc1 -fsyntax-only -pedantic -verify %s
typedef int int2 __attribute__;
typedef int int3 __attribute__;
typedef int int4 __attribute__;
typedef int int8 __attribute__;
typedef int int16 __attribute__;
void foo {
int4 auto1;
int16 *auto2;
int auto3;
int2 auto4;
struct S *incomplete1;
int res1[vec_step == 4 ? 1 : -1];
int res2[vec_step == 8 ? 1 : -1];
int res3[vec_step == 4 ? 1 : -1];
int res4[vec_step == 16 ? 1 : -1];
int res5[vec_step == 1 ? 1 : -1];
int res6[vec_step == 2 ? 1 : -1];
int res7[vec_step == 2 ? 1 : -1];
int res8[vec_step == 4 ? 1 : -1];
int res9[vec_step == 4 ? 1 : -1];
int res10[vec_step == 8 ? 1 : -1];
int res11[vec_step == 16 ? 1 : -1];
int res12[vec_step == 1 ? 1 : -1];
int res13 = vec_step; // expected-error {{'vec_step' requires built-in scalar or vector type, '__private struct S' invalid}}
int res14 = vec_step; // expected-error {{'vec_step' requires built-in scalar or vector type, '__private int16 *' invalid}}
int res15 = vec_step; // expected-error {{'vec_step' requires built-in scalar or vector type, 'void (void)' invalid}}
int res_no_effect = vec_step; // expected-warning {{expression with side effects has no effect in an unevaluated context}}
}