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 131 132 133
|
// RUN: %clang_cc1 -verify -fsyntax-only %s
// RUN: %clang_cc1 -Wconversion -verify -fsyntax-only -cl-std=CL2.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
// expected-error@-2{{implicit declaration of function 'to_global' is invalid in OpenCL}}
// expected-warning@-3{{incompatible integer to pointer conversion assigning to '__global int *__private' from 'int'}}
#else
// expected-error@-5{{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
// expected-warning@-2{{incompatible integer to pointer conversion assigning to '__global int *__private' from 'int'}}
#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
// expected-warning@-2{{incompatible integer to pointer conversion assigning to '__global int *__private' from 'int'}}
#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
// expected-warning@-2{{incompatible integer to pointer conversion assigning to '__global int *__private' from 'int'}}
#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
// expected-warning@-2{{incompatible integer to pointer conversion assigning to '__local int *__private' from 'int'}}
#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
// expected-error@-2{{implicit declaration of function 'to_private' is invalid in OpenCL}}
// expected-warning@-3{{incompatible integer to pointer conversion assigning to '__local int *__private' from 'int'}}
#else
// expected-error@-5{{assigning '__private int *' to '__local int *__private' changes address space of pointer}}
// expected-warning@-6{{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
// expected-error@-2{{implicit declaration of function 'to_local' is invalid in OpenCL}}
// expected-warning@-3{{incompatible integer to pointer conversion assigning to '__local int *__private' from 'int'}}
// expected-note@-4{{did you mean 'to_global'}}
// expected-note@13{{'to_global' declared here}}
#else
// expected-warning@-7{{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
// expected-warning@-2{{incompatible integer to pointer conversion assigning to '__private int *__private' from 'int'}}
#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
// expected-warning@-2{{incompatible integer to pointer conversion assigning to '__private int *__private' from 'int'}}
#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
// expected-warning@-2{{incompatible integer to pointer conversion assigning to '__private int *__private' from 'int'}}
#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
// expected-warning@-2{{incompatible integer to pointer conversion assigning to '__global int *__private' from 'int'}}
#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
// expected-warning@-2{{incompatible integer to pointer conversion assigning to '__global int *__private' from 'int'}}
#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
// expected-warning@-2{{incompatible integer to pointer conversion assigning to '__global int *__private' from 'int'}}
#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
// expected-warning@-2{{incompatible integer to pointer conversion initializing '__global char *__private' with an expression of type 'int'}}
#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
// expected-warning@-2{{incompatible integer to pointer conversion assigning to '__global float *__private' from 'int'}}
#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
}
|