1*d1c8a151SAnastasia Stulova// RUN: %clang_cc1 %s -triple spir -emit-llvm -O0 -o - | FileCheck %s 2*d1c8a151SAnastasia Stulova 3*d1c8a151SAnastasia Stulova// Test that we don't initialize local address space objects. 4*d1c8a151SAnastasia Stulova//CHECK: @_ZZ4testE1i = internal addrspace(3) global i32 undef 5*d1c8a151SAnastasia Stulova//CHECK: @_ZZ4testE2ii = internal addrspace(3) global %class.C undef 6*d1c8a151SAnastasia Stulovaclass C { 7*d1c8a151SAnastasia Stulova int i; 8*d1c8a151SAnastasia Stulova}; 9*d1c8a151SAnastasia Stulova 10*d1c8a151SAnastasia Stulovakernel void test() { 11*d1c8a151SAnastasia Stulova __local int i; 12*d1c8a151SAnastasia Stulova __local C ii; 13*d1c8a151SAnastasia Stulova // FIXME: In OpenCL C we don't accept initializers for local 14*d1c8a151SAnastasia Stulova // address space variables. User defined initialization could 15*d1c8a151SAnastasia Stulova // make sense, but would it mean that all work items need to 16*d1c8a151SAnastasia Stulova // execute it? Potentially disallowing any initialization would 17*d1c8a151SAnastasia Stulova // make things easier and assingments can be used to set specific 18*d1c8a151SAnastasia Stulova // values. This rules should make it consistent with OpenCL C. 19*d1c8a151SAnastasia Stulova //__local C c(); 20*d1c8a151SAnastasia Stulova} 21