// RUN: %clang_cc1 %s -pedantic -verify -fsyntax-only

typedef int int2 __attribute__((ext_vector_type(2)));
typedef int int3 __attribute__((ext_vector_type(3)));
typedef int int4 __attribute__((ext_vector_type(4)));

struct X {};

__global int g = 0;
__global int *__global g_ptr = &g;

kernel void foo() {
  // Testing conversions between vectors and vectors/scalars
  long l1;
  auto l_to_i2 = reinterpret_cast<int2>(l1);
  int2 i2;
  auto i2_to_l = reinterpret_cast<long>(i2);
  auto i2_to_i = reinterpret_cast<int>(i2); // expected-error{{reinterpret_cast from vector 'int2' (vector of 2 'int' values) to scalar 'int' of different size}}
  auto i2_to_i2 = reinterpret_cast<int2>(i2);

  // Testing reinterpret_cast with address spaces.
  __private short s;
  auto s2 = reinterpret_cast<__private short>(s);
  auto s3 = reinterpret_cast<decltype(s)>(s);
  auto s4 = reinterpret_cast<__global short>(s);

  __private X x;
  auto x2 = reinterpret_cast<__private X>(x); // expected-error{{reinterpret_cast from '__private X' to '__private X' is not allowed}}

  auto ptr = reinterpret_cast<__global int* __private>(g_ptr);
  (void)reinterpret_cast<__private int* __private>(g_ptr); // expected-error{{reinterpret_cast from '__global int *' to '__private int *' is not allowed}}

  // Only integral types (and pointer/references) can be reinterpret casted to themselves.
  // Currently this does not include any opencl types.
  reserve_id_t r_id1;
  auto r_id2 = reinterpret_cast<reserve_id_t>(r_id1); // expected-error{{reinterpret_cast from 'reserve_id_t' to 'reserve_id_t' is not allowed}}
}
