diff options
Diffstat (limited to 'test/SemaOpenCL/address-spaces.cl')
-rw-r--r-- | test/SemaOpenCL/address-spaces.cl | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/test/SemaOpenCL/address-spaces.cl b/test/SemaOpenCL/address-spaces.cl index 6ab10b3507f7..b188ea4576f1 100644 --- a/test/SemaOpenCL/address-spaces.cl +++ b/test/SemaOpenCL/address-spaces.cl @@ -11,3 +11,29 @@ __kernel void foo(__global int *gip) { ip = &li; // expected-error {{assigning '__local int *' to 'int *' changes address space of pointer}} ip = &ci; // expected-error {{assigning '__constant int *' to 'int *' changes address space of pointer}} } + +void explicit_cast(global int* g, local int* l, constant int* c, private int* p) +{ + g = (global int*) l; // expected-error {{casting '__local int *' to type '__global int *' changes address space of pointer}} + g = (global int*) c; // expected-error {{casting '__constant int *' to type '__global int *' changes address space of pointer}} + g = (global int*) p; // expected-error {{casting 'int *' to type '__global int *' changes address space of pointer}} + + l = (local int*) g; // expected-error {{casting '__global int *' to type '__local int *' changes address space of pointer}} + l = (local int*) c; // expected-error {{casting '__constant int *' to type '__local int *' changes address space of pointer}} + l = (local int*) p; // expected-error {{casting 'int *' to type '__local int *' changes address space of pointer}} + + c = (constant int*) g; // expected-error {{casting '__global int *' to type '__constant int *' changes address space of pointer}} + c = (constant int*) l; // expected-error {{casting '__local int *' to type '__constant int *' changes address space of pointer}} + c = (constant int*) p; // expected-error {{casting 'int *' to type '__constant int *' changes address space of pointer}} + + p = (private int*) g; // expected-error {{casting '__global int *' to type 'int *' changes address space of pointer}} + p = (private int*) l; // expected-error {{casting '__local int *' to type 'int *' changes address space of pointer}} + p = (private int*) c; // expected-error {{casting '__constant int *' to type 'int *' changes address space of pointer}} +} + +void ok_explicit_casts(global int *g, global int* g2, local int* l, local int* l2, private int* p, private int* p2) +{ + g = (global int*) g2; + l = (local int*) l2; + p = (private int*) p2; +} |