//RUN: %clang_cc1 %s -triple spir-unknown-unknown -emit-llvm -O0 -o - | FileCheck %s
struct C {
void foo() __local;
void foo() __global;
void foo();
void bar();
};
__global C c1;
__kernel void k() {
__local C c2;
C c3;
__global C &c_ref = c1;
__global C *c_ptr;
// CHECK: call spir_func void @_ZNU3AS11C3fooEv(ptr addrspace(1)
c1.foo();
// CHECK: call spir_func void @_ZNU3AS31C3fooEv(ptr addrspace(3)
c2.foo();
// CHECK: call spir_func void @_ZNU3AS41C3fooEv(ptr addrspace(4)
c3.foo();
// CHECK: call spir_func void @_ZNU3AS11C3fooEv(ptr addrspace(1)
c_ptr->foo();
// CHECK: spir_func void @_ZNU3AS11C3fooEv(ptr addrspace(1)
c_ref.foo();
// CHECK: call spir_func void @_ZNU3AS41C3barEv(ptr addrspace(4) {{[^,]*}} addrspacecast (ptr addrspace(1) @c1 to ptr addrspace(4)))
c1.bar();
//FIXME: Doesn't compile yet
//c_ptr->bar();
// CHECK: call spir_func void @_ZNU3AS41C3barEv(ptr addrspace(4) {{[^,]*}} addrspacecast (ptr addrspace(1) @c1 to ptr addrspace(4)))
c_ref.bar();
}