28 lines
		
	
	
		
			950 B
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			28 lines
		
	
	
		
			950 B
		
	
	
	
		
			C
		
	
	
	
// RUN: %clang_cc1 %s -verify -fsyntax-only -Wvector-conversion -triple x86_64-apple-darwin10
 | 
						|
 | 
						|
typedef unsigned int v2u __attribute__ ((ext_vector_type(2)));
 | 
						|
typedef int v2s __attribute__ ((ext_vector_type(2)));
 | 
						|
typedef float v2f __attribute__ ((ext_vector_type(2)));
 | 
						|
 | 
						|
void test1(v2u v2ua, v2s v2sa, v2f v2fa) {
 | 
						|
  // Bitwise binary operators
 | 
						|
  (void)(v2ua & v2ua);
 | 
						|
  (void)(v2fa & v2fa); // expected-error{{invalid operands to binary expression}}
 | 
						|
 | 
						|
  // Unary operators
 | 
						|
  (void)(~v2ua);
 | 
						|
  (void)(~v2fa); // expected-error{{invalid argument type 'v2f' (vector of 2 'float' values) to unary}}
 | 
						|
 | 
						|
  // Comparison operators
 | 
						|
  v2sa = (v2ua==v2sa);
 | 
						|
 | 
						|
  // Arrays
 | 
						|
  int array1[v2ua]; // expected-error{{size of array has non-integer type 'v2u' (vector of 2 'unsigned int' values}}
 | 
						|
  int array2[17];
 | 
						|
  // FIXME: error message below needs type!
 | 
						|
  (void)(array2[v2ua]); // expected-error{{array subscript is not an integer}}
 | 
						|
 | 
						|
  v2u *v2u_ptr = 0;
 | 
						|
  v2s *v2s_ptr;
 | 
						|
}
 |