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