blob: ca397375d73921a59dc7a87c22a2f9545821fe79 [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
Anton Yartsev7870b132011-03-27 15:36:07 +000015 // Comparison operators
16 v2ua = (v2ua==v2sa);
17
Douglas Gregorf6094622010-07-23 15:58:24 +000018 // Arrays
19 int array1[v2ua]; // expected-error{{size of array has non-integer type 'v2u'}}
20 int array2[17];
21 // FIXME: error message below needs type!
22 (void)(array2[v2ua]); // expected-error{{array subscript is not an integer}}
23
24 v2u *v2u_ptr = 0;
25 v2s *v2s_ptr;
26 v2s_ptr = v2u_ptr; // expected-warning{{converts between pointers to integer types with different sign}}
27}
28