1*ebd97534SNikita Popov//RUN: %clang_cc1 %s -triple spir-unknown-unknown -emit-llvm -O0 -o - | FileCheck %s 2d1c8a151SAnastasia Stulova 3d1c8a151SAnastasia Stulovastruct C { 4d1c8a151SAnastasia Stulova void foo() __local; 5d1c8a151SAnastasia Stulova void foo() __global; 6d1c8a151SAnastasia Stulova void foo(); 7d1c8a151SAnastasia Stulova void bar(); 8d1c8a151SAnastasia Stulova}; 9d1c8a151SAnastasia Stulova 10d1c8a151SAnastasia Stulova__global C c1; 11d1c8a151SAnastasia Stulova 12d1c8a151SAnastasia Stulova__kernel void k() { 13d1c8a151SAnastasia Stulova __local C c2; 14d1c8a151SAnastasia Stulova C c3; 15d1c8a151SAnastasia Stulova __global C &c_ref = c1; 16d1c8a151SAnastasia Stulova __global C *c_ptr; 17d1c8a151SAnastasia Stulova 18*ebd97534SNikita Popov // CHECK: call spir_func void @_ZNU3AS11C3fooEv(ptr addrspace(1) 19d1c8a151SAnastasia Stulova c1.foo(); 20*ebd97534SNikita Popov // CHECK: call spir_func void @_ZNU3AS31C3fooEv(ptr addrspace(3) 21d1c8a151SAnastasia Stulova c2.foo(); 22*ebd97534SNikita Popov // CHECK: call spir_func void @_ZNU3AS41C3fooEv(ptr addrspace(4) 23d1c8a151SAnastasia Stulova c3.foo(); 24*ebd97534SNikita Popov // CHECK: call spir_func void @_ZNU3AS11C3fooEv(ptr addrspace(1) 25d1c8a151SAnastasia Stulova c_ptr->foo(); 26*ebd97534SNikita Popov // CHECK: spir_func void @_ZNU3AS11C3fooEv(ptr addrspace(1) 27d1c8a151SAnastasia Stulova c_ref.foo(); 28d1c8a151SAnastasia Stulova 29*ebd97534SNikita Popov // CHECK: call spir_func void @_ZNU3AS41C3barEv(ptr addrspace(4) {{[^,]*}} addrspacecast (ptr addrspace(1) @c1 to ptr addrspace(4))) 30d1c8a151SAnastasia Stulova c1.bar(); 31d1c8a151SAnastasia Stulova //FIXME: Doesn't compile yet 32d1c8a151SAnastasia Stulova //c_ptr->bar(); 33*ebd97534SNikita Popov // CHECK: call spir_func void @_ZNU3AS41C3barEv(ptr addrspace(4) {{[^,]*}} addrspacecast (ptr addrspace(1) @c1 to ptr addrspace(4))) 34d1c8a151SAnastasia Stulova c_ref.bar(); 35d1c8a151SAnastasia Stulova} 36