| // RUN: %clang_cc1 -fsyntax-only %s -verify -Wvector-conversions | 
 |  | 
 | typedef long long t1 __attribute__ ((vector_size (8))); | 
 | typedef char t2 __attribute__ ((vector_size (16))); | 
 | typedef float t3 __attribute__ ((vector_size (16))); | 
 |  | 
 | void f() | 
 | {   | 
 |   t1 v1; | 
 |   t2 v2; | 
 |   t3 v3; | 
 |    | 
 |   v2 = (t2)v1; // -expected-error {{invalid conversion between vector type \ | 
 | 't2' and 't1' of different size}} | 
 |   v1 = (t1)v2; // -expected-error {{invalid conversion between vector type \ | 
 | 't1' and 't2' of different size}} | 
 |   v3 = (t3)v2; | 
 |    | 
 |   v1 = (t1)(char *)10; // -expected-error {{invalid conversion between vector \ | 
 | type 't1' and scalar type 'char *'}} | 
 |   v1 = (t1)(long long)10; | 
 |   v1 = (t1)(short)10; // -expected-error {{invalid conversion between vector \ | 
 | type 't1' and integer type 'short' of different size}} | 
 |    | 
 |   long long r1 = (long long)v1; | 
 |   short r2 = (short)v1; // -expected-error {{invalid conversion between vector \ | 
 | type 't1' and integer type 'short' of different size}} | 
 |   char *r3 = (char *)v1; // -expected-error {{invalid conversion between vector\ | 
 |  type 't1' and scalar type 'char *'}} | 
 | } | 
 |  | 
 |  | 
 | void f2(t2 X); | 
 |  | 
 | void f3(t3 Y) { | 
 |   f2(Y);  // expected-warning {{incompatible vector types passing 't3', expected 't2'}} | 
 | } | 
 |  |