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