| //RUN: %clang_cc1 %s -triple spir-unknown-unknown -cl-std=clc++ -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(%struct.C addrspace(1)* |
| c1.foo(); |
| // CHECK: call spir_func void @_ZNU3AS31C3fooEv(%struct.C addrspace(3)* |
| c2.foo(); |
| // CHECK: call spir_func void @_ZNU3AS41C3fooEv(%struct.C addrspace(4)* |
| c3.foo(); |
| // CHECK: call spir_func void @_ZNU3AS11C3fooEv(%struct.C addrspace(1)* |
| c_ptr->foo(); |
| // CHECK: spir_func void @_ZNU3AS11C3fooEv(%struct.C addrspace(1)* |
| c_ref.foo(); |
| |
| // CHECK: call spir_func void @_ZNU3AS41C3barEv(%struct.C addrspace(4)* addrspacecast (%struct.C addrspace(1)* @c1 to %struct.C addrspace(4)*)) |
| c1.bar(); |
| //FIXME: Doesn't compile yet |
| //c_ptr->bar(); |
| // CHECK: call spir_func void @_ZNU3AS41C3barEv(%struct.C addrspace(4)* addrspacecast (%struct.C addrspace(1)* @c1 to %struct.C addrspace(4)*)) |
| c_ref.bar(); |
| } |