1// RUN: %clang_cc1 -cl-std=CL1.0 -fdeclare-opencl-builtins -finclude-default-header -verify %s 2// RUN: %clang_cc1 -cl-std=CL1.1 -fdeclare-opencl-builtins -finclude-default-header -verify %s 3// RUN: %clang_cc1 -cl-std=CL1.2 -fdeclare-opencl-builtins -finclude-default-header -verify %s 4// RUN: %clang_cc1 -cl-std=CL2.0 -fdeclare-opencl-builtins -finclude-default-header -verify %s 5// RUN: %clang_cc1 -cl-std=clc++ -fdeclare-opencl-builtins -finclude-default-header -verify %s 6 7void foo(){ 8 9global int* ptr1 = NULL; 10 11#if defined(__OPENCL_CPP_VERSION__) 12// expected-error@+2{{cannot initialize a variable of type '__global int *__private' with an rvalue of type '__global void *'}} 13#endif 14global int* ptr2 = (global void*)0; 15 16constant int* ptr3 = NULL; 17 18#if defined(__OPENCL_CPP_VERSION__) 19// expected-error@+4{{cannot initialize a variable of type '__constant int *__private' with an rvalue of type '__global void *'}} 20#else 21// expected-error@+2{{initializing '__constant int *__private' with an expression of type '__global void *' changes address space of pointer}} 22#endif 23constant int* ptr4 = (global void*)0; 24 25#if __OPENCL_C_VERSION__ == CL_VERSION_2_0 26// Accept explicitly pointer to generic address space in OpenCL v2.0. 27global int* ptr5 = (generic void*)0; 28#endif 29 30#if defined(__OPENCL_CPP_VERSION__) 31// expected-error@+4{{cannot initialize a variable of type '__global int *__private' with an rvalue of type '__local void *'}} 32#else 33// expected-error@+2{{initializing '__global int *__private' with an expression of type '__local void *' changes address space of pointer}} 34#endif 35global int* ptr6 = (local void*)0; 36 37bool cmp = ptr1 == NULL; 38 39#if defined(__OPENCL_CPP_VERSION__) 40// expected-error@+4{{comparison of distinct pointer types ('__global int *' and '__local void *')}} 41#else 42// expected-error@+2{{comparison between ('__global int *' and '__local void *') which are pointers to non-overlapping address spaces}} 43#endif 44cmp = ptr1 == (local void*)0; 45 46cmp = ptr3 == NULL; 47 48} 49