// RUN: %clang_cc1 %s -emit-llvm -o - -O0 -triple spir-unknown-unknown | FileCheck %s

// CHECK: %struct.X = type { i32 }

// CHECK: @ci ={{.*}} addrspace(2) constant i32 0
// CHECK: @gi ={{.*}} addrspace(1) global i32 0
__constant int ci = 0;
__global int gi = 0;

struct X {
  int x;

  // Local variables are handled in local_addrspace_init.clcpp
  X() /*__generic*/ : x(0) {}
  X() __private : x(0) {}
  X() __global : x(0) {}
  constexpr X() __constant : x(0) {}
  constexpr X(int x) __constant : x(x) {}
};

// CHECK: @cx1 ={{.*}} addrspace(2) constant %struct.X zeroinitializer
// CHECK: @cx2 ={{.*}} addrspace(2) constant %struct.X { i32 1 }
// CHECK: @gx ={{.*}} addrspace(1) global %struct.X zeroinitializer
__constant X cx1;
__constant X cx2(1);
__global X gx;

// CHECK: @_ZZ1kE3cx1 = internal addrspace(2) constant %struct.X zeroinitializer
// CHECK: @_ZZ1kE3cx2 = internal addrspace(2) constant %struct.X { i32 1 }

kernel void k() {
  // Check that the constructor for px calls the __private constructor.
  // CHECK: %px = alloca %struct.X
  // CHECK-NEXT: call spir_func void @_ZN1XC1Ev(%struct.X* {{.*}}%px)
  __private X px;

  __constant X cx1;
  __constant X cx2(1);
  // CHECK-NEXT: ret void
}
