1// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only -cl-std=CL1.2 2 3static constant int G1 = 0; 4constant int G2 = 0; 5int G3 = 0; // expected-error{{program scope variable must reside in constant address space}} 6global int G4 = 0; // expected-error{{program scope variable must reside in constant address space}} 7 8static float g_implicit_static_var = 0; // expected-error {{program scope variable must reside in constant address space}} 9static constant float g_constant_static_var = 0; 10static global float g_global_static_var = 0; // expected-error {{program scope variable must reside in constant address space}} 11static local float g_local_static_var = 0; // expected-error {{program scope variable must reside in constant address space}} 12static private float g_private_static_var = 0; // expected-error {{program scope variable must reside in constant address space}} 13static generic float g_generic_static_var = 0; // expected-error{{OpenCL C version 1.2 does not support the 'generic' type qualifier}} // expected-error {{program scope variable must reside in constant address space}} 14 15extern float g_implicit_extern_var; // expected-error {{extern variable must reside in constant address space}} 16extern constant float g_constant_extern_var; 17extern global float g_global_extern_var; // expected-error {{extern variable must reside in constant address space}} 18extern local float g_local_extern_var; // expected-error {{extern variable must reside in constant address space}} 19extern private float g_private_extern_var; // expected-error {{extern variable must reside in constant address space}} 20extern generic float g_generic_extern_var; // expected-error{{OpenCL C version 1.2 does not support the 'generic' type qualifier}} // expected-error {{extern variable must reside in constant address space}} 21 22void kernel foo(int x) { 23 // static is not allowed at local scope before CL2.0 24 static int S1 = 5; // expected-error{{variables in function scope cannot be declared static}} 25 static constant int S2 = 5; // expected-error{{variables in function scope cannot be declared static}} 26 27 constant int L1 = 0; 28 local int L2; 29 30 if (true) { 31 local int L1; // expected-error {{variables in the local address space can only be declared in the outermost scope of a kernel function}} 32 constant int L1 = 42; // expected-error {{variables in the constant address space can only be declared in the outermost scope of a kernel function}} 33 } 34 35 auto int L3 = 7; // expected-error{{OpenCL C version 1.2 does not support the 'auto' storage class specifier}} 36 global int L4; // expected-error{{function scope variable cannot be declared in global address space}} 37 __attribute__((address_space(100))) int L5; // expected-error{{automatic variable qualified with an invalid address space}} 38 39 constant int L6 = x; // expected-error {{initializer element is not a compile-time constant}} 40 global int *constant L7 = &G4; 41 private int *constant L8 = &x; // expected-error {{initializer element is not a compile-time constant}} 42 constant int *constant L9 = &L1; 43 local int *constant L10 = &L2; // expected-error {{initializer element is not a compile-time constant}} 44} 45 46static void kernel bar() { // expected-error{{kernel functions cannot be declared static}} 47} 48 49void f() { 50 constant int L1 = 0; // expected-error{{non-kernel function variable cannot be declared in constant address space}} 51 local int L2; // expected-error{{non-kernel function variable cannot be declared in local address space}} 52 global int L3; // expected-error{{function scope variable cannot be declared in global address space}} 53 __attribute__((address_space(100))) int L4; // expected-error{{automatic variable qualified with an invalid address space}} 54 55 { 56 constant int L1 = 0; // expected-error{{non-kernel function variable cannot be declared in constant address space}} 57 local int L2; // expected-error{{non-kernel function variable cannot be declared in local address space}} 58 global int L3; // expected-error{{function scope variable cannot be declared in global address space}} 59 __attribute__((address_space(100))) int L4; // expected-error{{automatic variable qualified with an invalid address space}} 60 } 61 62 static float l_implicit_static_var = 0; // expected-error {{variables in function scope cannot be declared static}} 63 static constant float l_constant_static_var = 0; // expected-error {{variables in function scope cannot be declared static}} 64 static global float l_global_static_var = 0; // expected-error {{variables in function scope cannot be declared static}} 65 static local float l_local_static_var = 0; // expected-error {{variables in function scope cannot be declared static}} 66 static private float l_private_static_var = 0; // expected-error {{variables in function scope cannot be declared static}} 67 static generic float l_generic_static_var = 0; // expected-error{{OpenCL C version 1.2 does not support the 'generic' type qualifier}} // expected-error {{variables in function scope cannot be declared static}} 68 69 extern float l_implicit_extern_var; // expected-error {{extern variable must reside in constant address space}} 70 extern constant float l_constant_extern_var; 71 extern global float l_global_extern_var; // expected-error {{extern variable must reside in constant address space}} 72 extern local float l_local_extern_var; // expected-error {{extern variable must reside in constant address space}} 73 extern private float l_private_extern_var; // expected-error {{extern variable must reside in constant address space}} 74 extern generic float l_generic_extern_var; // expected-error{{OpenCL C version 1.2 does not support the 'generic' type qualifier}} // expected-error {{extern variable must reside in constant address space}} 75} 76