blob: d090c79ebf4a870301afe1a8ebc44e0e2b0dc7a4 [file] [log] [blame]
Anastasia Stulova88ed70e2019-07-25 11:04:29 +00001//RUN: %clang_cc1 %s -triple spir-unknown-unknown -cl-std=clc++ -emit-llvm -O0 -o - | FileCheck %s
Anastasia Stulova5cffa452019-01-21 16:01:38 +00002
3struct C {
4 void foo() __local;
5 void foo() __global;
6 void foo();
7 void bar();
8};
9
10__global C c1;
11
12__kernel void k() {
13 __local C c2;
14 C c3;
15 __global C &c_ref = c1;
16 __global C *c_ptr;
17
Erich Keane61478ec2019-07-26 12:36:12 +000018 // CHECK: call spir_func void @_ZNU3AS11C3fooEv(%struct.C addrspace(1)*
Anastasia Stulova5cffa452019-01-21 16:01:38 +000019 c1.foo();
Erich Keane61478ec2019-07-26 12:36:12 +000020 // CHECK: call spir_func void @_ZNU3AS31C3fooEv(%struct.C addrspace(3)*
Anastasia Stulova5cffa452019-01-21 16:01:38 +000021 c2.foo();
Erich Keane61478ec2019-07-26 12:36:12 +000022 // CHECK: call spir_func void @_ZNU3AS41C3fooEv(%struct.C addrspace(4)*
Anastasia Stulova5cffa452019-01-21 16:01:38 +000023 c3.foo();
Erich Keane61478ec2019-07-26 12:36:12 +000024 // CHECK: call spir_func void @_ZNU3AS11C3fooEv(%struct.C addrspace(1)*
Anastasia Stulova5cffa452019-01-21 16:01:38 +000025 c_ptr->foo();
Erich Keane61478ec2019-07-26 12:36:12 +000026 // CHECK: spir_func void @_ZNU3AS11C3fooEv(%struct.C addrspace(1)*
Anastasia Stulova5cffa452019-01-21 16:01:38 +000027 c_ref.foo();
28
Erich Keane61478ec2019-07-26 12:36:12 +000029 // CHECK: call spir_func void @_ZNU3AS41C3barEv(%struct.C addrspace(4)* addrspacecast (%struct.C addrspace(1)* @c1 to %struct.C addrspace(4)*))
Anastasia Stulova5cffa452019-01-21 16:01:38 +000030 c1.bar();
31 //FIXME: Doesn't compile yet
32 //c_ptr->bar();
Erich Keane61478ec2019-07-26 12:36:12 +000033 // CHECK: call spir_func void @_ZNU3AS41C3barEv(%struct.C addrspace(4)* addrspacecast (%struct.C addrspace(1)* @c1 to %struct.C addrspace(4)*))
Anastasia Stulova5cffa452019-01-21 16:01:38 +000034 c_ref.bar();
35}