blob: c3f84aae40af0fa3990221b9603834646b6570a7 [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
Tanya Lattner6ec96432011-10-17 21:00:38 +000016 v2ua = (v2ua==v2sa); // expected-warning{{incompatible vector types assigning to 'v2u' from 'int __attribute__((ext_vector_type(2)))'}}
17 v2sa = (v2ua==v2sa);
18
Douglas Gregorf6094622010-07-23 15:58:24 +000019 // Arrays
20 int array1[v2ua]; // expected-error{{size of array has non-integer type 'v2u'}}
21 int array2[17];
22 // FIXME: error message below needs type!
23 (void)(array2[v2ua]); // expected-error{{array subscript is not an integer}}
24
25 v2u *v2u_ptr = 0;
26 v2s *v2s_ptr;
27 v2s_ptr = v2u_ptr; // expected-warning{{converts between pointers to integer types with different sign}}
28}
29