1 // RUN
: %clang_cc1 %s -verify -pedantic -fsyntax-only
5 __kernel void foo
(__global int
*gip
) {
7 __local int lj
= 2; // expected-error {{'__local' variable cannot have an initializer}}
10 ip
= gip
; // expected-error {{assigning '__global int *' to 'int *' changes address space of pointer}}
11 ip
= &li
; // expected-error {{assigning '__local int *' to 'int *' changes address space of pointer}}
12 ip
= &ci
; // expected-error {{assigning '__constant int *' to 'int *' changes address space of pointer}}
15 void explicit_cast
(global int
* g
, local int
* l
, constant int
* c
, private int
* p
, const constant int
*cc
)
17 g
= (global int
*) l
; // expected-error {{casting '__local int *' to type '__global int *' changes address space of pointer}}
18 g
= (global int
*) c
; // expected-error {{casting '__constant int *' to type '__global int *' changes address space of pointer}}
19 g
= (global int
*) cc
; // expected-error {{casting 'const __constant int *' to type '__global int *' changes address space of pointer}}
20 g
= (global int
*) p
; // expected-error {{casting 'int *' to type '__global int *' changes address space of pointer}}
22 l
= (local int
*) g
; // expected-error {{casting '__global int *' to type '__local int *' changes address space of pointer}}
23 l
= (local int
*) c
; // expected-error {{casting '__constant int *' to type '__local int *' changes address space of pointer}}
24 l
= (local int
*) cc
; // expected-error {{casting 'const __constant int *' to type '__local int *' changes address space of pointer}}
25 l
= (local int
*) p
; // expected-error {{casting 'int *' to type '__local int *' changes address space of pointer}}
27 c
= (constant int
*) g
; // expected-error {{casting '__global int *' to type '__constant int *' changes address space of pointer}}
28 c
= (constant int
*) l
; // expected-error {{casting '__local int *' to type '__constant int *' changes address space of pointer}}
29 c
= (constant int
*) p
; // expected-error {{casting 'int *' to type '__constant int *' changes address space of pointer}}
31 p
= (private int
*) g
; // expected-error {{casting '__global int *' to type 'int *' changes address space of pointer}}
32 p
= (private int
*) l
; // expected-error {{casting '__local int *' to type 'int *' changes address space of pointer}}
33 p
= (private int
*) c
; // expected-error {{casting '__constant int *' to type 'int *' changes address space of pointer}}
34 p
= (private int
*) cc
; // expected-error {{casting 'const __constant int *' to type 'int *' changes address space of pointer}}
37 void ok_explicit_casts
(global int
*g
, global int
* g2
, local int
* l
, local int
* l2
, private int
* p
, private int
* p2
)
41 p
= (private int
*) p2
;