blob: 20575ec510c31843691b65d47c8ab6261e2fa17e [file] [log] [blame]
Douglas Gregorf6094622010-07-23 15:58:24 +00001// RUN: %clang_cc1 %s -verify -fsyntax-only -Wvector-conversions
2typedef unsigned int v2u __attribute__ ((vector_size (8)));
3typedef int v2s __attribute__ ((vector_size (8)));
4typedef float v2f __attribute__ ((vector_size(8)));
5
6void test1(v2u v2ua, v2s v2sa, v2f v2fa) {
7 // Bitwise binary operators
8 (void)(v2ua & v2ua);
9 (void)(v2fa & v2fa); // expected-error{{invalid operands to binary expression}}
10
11 // Unary operators
12 (void)(~v2ua);
13 (void)(~v2fa); // expected-error{{invalid argument type 'v2f' to unary}}
14
15 // Arrays
16 int array1[v2ua]; // expected-error{{size of array has non-integer type 'v2u'}}
17 int array2[17];
18 // FIXME: error message below needs type!
19 (void)(array2[v2ua]); // expected-error{{array subscript is not an integer}}
20
21 v2u *v2u_ptr = 0;
22 v2s *v2s_ptr;
23 v2s_ptr = v2u_ptr; // expected-warning{{converts between pointers to integer types with different sign}}
24}
25