blob: d83ebf11fe033bb815dd6a916d69849b7769fb8e [file] [log] [blame]
Peter Collingbournef4e3cfb2011-03-11 19:24:49 +00001// RUN: %clang_cc1 -fsyntax-only -pedantic -verify %s
2
3typedef int int2 __attribute__((ext_vector_type(2)));
4typedef int int3 __attribute__((ext_vector_type(3)));
5typedef int int4 __attribute__((ext_vector_type(4)));
6typedef int int8 __attribute__((ext_vector_type(8)));
7typedef int int16 __attribute__((ext_vector_type(16)));
8
9void foo(int3 arg1, int8 arg2) {
10 int4 auto1;
11 int16 *auto2;
12 int auto3;
13 int2 auto4;
14 struct S *incomplete1;
15
16 int res1[vec_step(arg1) == 4 ? 1 : -1];
17 int res2[vec_step(arg2) == 8 ? 1 : -1];
18 int res3[vec_step(auto1) == 4 ? 1 : -1];
19 int res4[vec_step(*auto2) == 16 ? 1 : -1];
20 int res5[vec_step(auto3) == 1 ? 1 : -1];
21 int res6[vec_step(auto4) == 2 ? 1 : -1];
22 int res7[vec_step(int2) == 2 ? 1 : -1];
23 int res8[vec_step(int3) == 4 ? 1 : -1];
24 int res9[vec_step(int4) == 4 ? 1 : -1];
25 int res10[vec_step(int8) == 8 ? 1 : -1];
26 int res11[vec_step(int16) == 16 ? 1 : -1];
27 int res12[vec_step(void) == 1 ? 1 : -1];
28
29 int res13 = vec_step(*incomplete1); // expected-error {{'vec_step' requires built-in scalar or vector type, 'struct S' invalid}}
30 int res14 = vec_step(int16*); // expected-error {{'vec_step' requires built-in scalar or vector type, 'int16 *' invalid}}
31 int res15 = vec_step(void(void)); // expected-error {{'vec_step' requires built-in scalar or vector type, 'void (void)' invalid}}
32}