xref: /aosp_15_r20/external/clang/test/SemaOpenCL/null_literal.cl (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li// RUN: %clang_cc1 -verify %s
2*67e74705SXin Li// RUN: %clang_cc1 -cl-std=CL2.0 -DCL20 -verify %s
3*67e74705SXin Li
4*67e74705SXin Li#define NULL ((void*)0)
5*67e74705SXin Li
6*67e74705SXin Livoid foo(){
7*67e74705SXin Li
8*67e74705SXin Liglobal int* ptr1 = NULL;
9*67e74705SXin Li
10*67e74705SXin Liglobal int* ptr2 = (global void*)0;
11*67e74705SXin Li
12*67e74705SXin Liconstant int* ptr3 = NULL;
13*67e74705SXin Li
14*67e74705SXin Liconstant int* ptr4 = (global void*)0; // expected-error{{initializing '__constant int *' with an expression of type '__global void *' changes address space of pointer}}
15*67e74705SXin Li
16*67e74705SXin Li#ifdef CL20
17*67e74705SXin Li// Accept explicitly pointer to generic address space in OpenCL v2.0.
18*67e74705SXin Liglobal int* ptr5 = (generic void*)0;
19*67e74705SXin Li#endif
20*67e74705SXin Li
21*67e74705SXin Liglobal int* ptr6 = (local void*)0; // expected-error{{initializing '__global int *' with an expression of type '__local void *' changes address space of pointer}}
22*67e74705SXin Li
23*67e74705SXin Libool cmp = ptr1 == NULL;
24*67e74705SXin Li
25*67e74705SXin Licmp = ptr1 == (local void*)0; // expected-error{{comparison between  ('__global int *' and '__local void *') which are pointers to non-overlapping address spaces}}
26*67e74705SXin Li
27*67e74705SXin Licmp = ptr3 == NULL;
28*67e74705SXin Li
29*67e74705SXin Li}
30