xref: /aosp_15_r20/external/clang/test/SemaOpenCL/to_addr_builtin.cl (revision 67e74705e28f6214e480b399dd47ea732279e315)
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