// RUN: clang-cc -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'}}
}

