1*67e74705SXin Li// RUN: %clang_cc1 -verify -fsyntax-only %s 2*67e74705SXin Li// RUN: %clang_cc1 -verify -fsyntax-only -cl-std=CL2.0 %s 3*67e74705SXin Li 4*67e74705SXin Livoid test(void) { 5*67e74705SXin Li global int *glob; 6*67e74705SXin Li local int *loc; 7*67e74705SXin Li constant int *con; 8*67e74705SXin Li typedef constant int const_int_ty; 9*67e74705SXin Li const_int_ty *con_typedef; 10*67e74705SXin Li 11*67e74705SXin Li glob = to_global(glob, loc); 12*67e74705SXin Li#if __OPENCL_C_VERSION__ < CL_VERSION_2_0 13*67e74705SXin Li // expected-warning@-2{{implicit declaration of function 'to_global' is invalid in C99}} 14*67e74705SXin Li // expected-warning@-3{{incompatible integer to pointer conversion assigning to '__global int *' from 'int'}} 15*67e74705SXin Li#else 16*67e74705SXin Li // expected-error@-5{{invalid number of arguments to function: 'to_global'}} 17*67e74705SXin Li#endif 18*67e74705SXin Li 19*67e74705SXin Li int x; 20*67e74705SXin Li glob = to_global(x); 21*67e74705SXin Li#if __OPENCL_C_VERSION__ < CL_VERSION_2_0 22*67e74705SXin Li // expected-warning@-2{{incompatible integer to pointer conversion assigning to '__global int *' from 'int'}} 23*67e74705SXin Li#else 24*67e74705SXin Li // expected-error@-4{{invalid argument x to function: 'to_global', expecting a generic pointer argument}} 25*67e74705SXin Li#endif 26*67e74705SXin Li 27*67e74705SXin Li glob = to_global(con); 28*67e74705SXin Li#if __OPENCL_C_VERSION__ < CL_VERSION_2_0 29*67e74705SXin Li // expected-warning@-2{{incompatible integer to pointer conversion assigning to '__global int *' from 'int'}} 30*67e74705SXin Li#else 31*67e74705SXin Li // expected-error@-4{{invalid argument con to function: 'to_global', expecting a generic pointer argument}} 32*67e74705SXin Li#endif 33*67e74705SXin Li 34*67e74705SXin Li glob = to_global(con_typedef); 35*67e74705SXin Li#if __OPENCL_C_VERSION__ < CL_VERSION_2_0 36*67e74705SXin Li // expected-warning@-2{{incompatible integer to pointer conversion assigning to '__global int *' from 'int'}} 37*67e74705SXin Li#else 38*67e74705SXin Li // expected-error@-4{{invalid argument con_typedef to function: 'to_global', expecting a generic pointer argument}} 39*67e74705SXin Li#endif 40*67e74705SXin Li 41*67e74705SXin Li loc = to_global(glob); 42*67e74705SXin Li#if __OPENCL_C_VERSION__ < CL_VERSION_2_0 43*67e74705SXin Li // expected-warning@-2{{incompatible integer to pointer conversion assigning to '__local int *' from 'int'}} 44*67e74705SXin Li#else 45*67e74705SXin Li // expected-error@-4{{assigning '__global int *' to '__local int *' changes address space of pointer}} 46*67e74705SXin Li#endif 47*67e74705SXin Li 48*67e74705SXin Li global char *glob_c = to_global(loc); 49*67e74705SXin Li#if __OPENCL_C_VERSION__ < CL_VERSION_2_0 50*67e74705SXin Li // expected-warning@-2{{incompatible integer to pointer conversion initializing '__global char *' with an expression of type 'int'}} 51*67e74705SXin Li#else 52*67e74705SXin Li // expected-warning@-4{{incompatible pointer types initializing '__global char *' with an expression of type '__global int *'}} 53*67e74705SXin Li#endif 54*67e74705SXin Li 55*67e74705SXin Li} 56