1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
|
// RUN: %clang_cc1 -verify -fsyntax-only %s
// RUN: %clang_cc1 -Wconversion -verify -fsyntax-only -cl-std=CL2.0 %s
// RUN: %clang_cc1 -Wconversion -verify -fsyntax-only -cl-std=CL3.0 -cl-ext=-all %s
// RUN: %clang_cc1 -Wconversion -verify -fsyntax-only -cl-std=CL3.0 %s
void test(void) {
global int *glob;
local int *loc;
constant int *con;
private int *priv;
global float *glob_wrong_ty;
typedef constant int const_int_ty;
const_int_ty *con_typedef;
glob = to_global(glob, loc);
#if (__OPENCL_C_VERSION__ < CL_VERSION_2_0) || (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 && !defined(__opencl_c_generic_address_space))
// expected-error@-2{{use of undeclared identifier 'to_global'}}
#else
// expected-error@-4{{too many arguments to function call, expected 1, have 2}}
#endif
int x;
glob = to_global(x);
#if (__OPENCL_C_VERSION__ < CL_VERSION_2_0) || (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 && !defined(__opencl_c_generic_address_space))
// expected-error@-2{{use of undeclared identifier 'to_global'}}
#else
// expected-error@-4{{invalid argument x to function: 'to_global', expecting a generic pointer argument}}
#endif
glob = to_global(con);
#if (__OPENCL_C_VERSION__ < CL_VERSION_2_0) || (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 && !defined(__opencl_c_generic_address_space))
// expected-error@-2{{use of undeclared identifier 'to_global'}}
#else
// expected-error@-4{{invalid argument con to function: 'to_global', expecting a generic pointer argument}}
#endif
glob = to_global(con_typedef);
#if (__OPENCL_C_VERSION__ < CL_VERSION_2_0) || (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 && !defined(__opencl_c_generic_address_space))
// expected-error@-2{{use of undeclared identifier 'to_global'}}
#else
// expected-error@-4{{invalid argument con_typedef to function: 'to_global', expecting a generic pointer argument}}
#endif
loc = to_global(glob);
#if (__OPENCL_C_VERSION__ < CL_VERSION_2_0) || (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 && !defined(__opencl_c_generic_address_space))
// expected-error@-2{{use of undeclared identifier 'to_global'}}
#else
// expected-error@-4{{assigning '__global int *' to '__local int *__private' changes address space of pointer}}
// expected-warning@-5{{passing non-generic address space pointer to to_global may cause dynamic conversion affecting performance}}
#endif
loc = to_private(glob);
#if (__OPENCL_C_VERSION__ < CL_VERSION_2_0) || (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 && !defined(__opencl_c_generic_address_space))
// expected-error@-2{{use of undeclared identifier 'to_private'}}
#else
// expected-error@-4{{assigning '__private int *' to '__local int *__private' changes address space of pointer}}
// expected-warning@-5{{passing non-generic address space pointer to to_private may cause dynamic conversion affecting performance}}
#endif
loc = to_local(glob);
#if (__OPENCL_C_VERSION__ < CL_VERSION_2_0) || (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 && !defined(__opencl_c_generic_address_space))
// expected-error@-2{{use of undeclared identifier 'to_local'}}
#else
// expected-warning@-4{{passing non-generic address space pointer to to_local may cause dynamic conversion affecting performance}}
#endif
priv = to_global(glob);
#if (__OPENCL_C_VERSION__ < CL_VERSION_2_0) || (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 && !defined(__opencl_c_generic_address_space))
// expected-error@-2{{use of undeclared identifier 'to_global'}}
#else
// expected-error@-4{{assigning '__global int *' to '__private int *__private' changes address space of pointer}}
// expected-warning@-5{{passing non-generic address space pointer to to_global may cause dynamic conversion affecting performance}}
#endif
priv = to_private(glob);
#if (__OPENCL_C_VERSION__ < CL_VERSION_2_0) || (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 && !defined(__opencl_c_generic_address_space))
// expected-error@-2{{use of undeclared identifier 'to_private'}}
#else
// expected-warning@-4{{passing non-generic address space pointer to to_private may cause dynamic conversion affecting performance}}
#endif
priv = to_local(glob);
#if (__OPENCL_C_VERSION__ < CL_VERSION_2_0) || (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 && !defined(__opencl_c_generic_address_space))
// expected-error@-2{{use of undeclared identifier 'to_local'}}
#else
// expected-error@-4{{assigning '__local int *' to '__private int *__private' changes address space of pointer}}
// expected-warning@-5{{passing non-generic address space pointer to to_local may cause dynamic conversion affecting performance}}
#endif
glob = to_global(glob);
#if (__OPENCL_C_VERSION__ < CL_VERSION_2_0) || (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 && !defined(__opencl_c_generic_address_space))
// expected-error@-2{{use of undeclared identifier 'to_global'}}
#else
// expected-warning@-4{{passing non-generic address space pointer to to_global may cause dynamic conversion affecting performance}}
#endif
glob = to_private(glob);
#if (__OPENCL_C_VERSION__ < CL_VERSION_2_0) || (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 && !defined(__opencl_c_generic_address_space))
// expected-error@-2{{use of undeclared identifier 'to_private'}}
#else
// expected-error@-4{{assigning '__private int *' to '__global int *__private' changes address space of pointer}}
// expected-warning@-5{{passing non-generic address space pointer to to_private may cause dynamic conversion affecting performance}}
#endif
glob = to_local(glob);
#if (__OPENCL_C_VERSION__ < CL_VERSION_2_0) || (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 && !defined(__opencl_c_generic_address_space))
// expected-error@-2{{use of undeclared identifier 'to_local'}}
#else
// expected-error@-4{{assigning '__local int *' to '__global int *__private' changes address space of pointer}}
// expected-warning@-5{{passing non-generic address space pointer to to_local may cause dynamic conversion affecting performance}}
#endif
global char *glob_c = to_global(loc);
#if (__OPENCL_C_VERSION__ < CL_VERSION_2_0) || (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 && !defined(__opencl_c_generic_address_space))
// expected-error@-2{{use of undeclared identifier 'to_global'}}
#else
// expected-warning@-4{{incompatible pointer types initializing '__global char *__private' with an expression of type '__global int *'}}
// expected-warning@-5{{passing non-generic address space pointer to to_global may cause dynamic conversion affecting performance}}
#endif
glob_wrong_ty = to_global(glob);
#if (__OPENCL_C_VERSION__ < CL_VERSION_2_0) || (__OPENCL_C_VERSION__ >= CL_VERSION_3_0 && !defined(__opencl_c_generic_address_space))
// expected-error@-2{{use of undeclared identifier 'to_global'}}
#else
// expected-warning@-4{{incompatible pointer types assigning to '__global float *__private' from '__global int *'}}
// expected-warning@-5{{passing non-generic address space pointer to to_global may cause dynamic conversion affecting performance}}
#endif
}
|