| //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(); |
| } |