// RUN: %target-swift-frontend -assume-parsing-unqualified-ownership-sil %s -emit-ir | %FileCheck %s

// REQUIRES: CPU=x86_64

import Swift

// CHECK-LABEL: @_TMnV18field_type_vectors3Foo = hidden constant
// CHECK:         %swift.type** (%swift.type*)* [[FOO_TYPES_ACCESSOR:@[A-Za-z0-9_]*]]
struct Foo {
  var x: Int
}

// CHECK-LABEL: @_TMnV18field_type_vectors3Bar = hidden constant
// CHECK:         %swift.type** (%swift.type*)* [[BAR_TYPES_ACCESSOR:@[A-Za-z0-9_]*]]
// CHECK-LABEL: @_TMPV18field_type_vectors3Bar = hidden global
// -- There should be 5 words between the address point and the field type
//    vector slot, with type %swift.type**
// CHECK:         i64, i64, i64, i64, %swift.type*, %swift.type**
struct Bar<T> {
  var y: Int
}

// CHECK-LABEL: @_TMnV18field_type_vectors3Bas = hidden constant
// CHECK:         %swift.type** (%swift.type*)* [[BAS_TYPES_ACCESSOR:@[A-Za-z0-9_]*]]
// CHECK-LABEL: @_TMPV18field_type_vectors3Bas = hidden global
// -- There should be 7 words between the address point and the field type
//    vector slot, with type %swift.type**
// CHECK:         i64, i64, i64, i64, i64, %swift.type*, %swift.type*, %swift.type**
struct Bas<T, U> {
  var foo: Foo
  var bar: Bar<T>
}

// CHECK-LABEL: @_TMnC18field_type_vectors3Zim = hidden constant
// CHECK:         %swift.type** (%swift.type*)* [[ZIM_TYPES_ACCESSOR:@[A-Za-z0-9_]*]]
// CHECK-LABEL: @_TMPC18field_type_vectors3Zim = hidden global
// -- There should be 14 words between the address point and the field type
//    vector slot, with type %swift.type**
// CHECK:         i64, %swift.type*, %swift.opaque*, %swift.opaque*, i64, i32, i32, i32, i16, i16, i32, i32, i64, i8*, %swift.type*, %swift.type*, i8*, i64, i64, i64, %swift.type**
class Zim<T, U> {
  var foo: Foo?
  var bar: Bar<T>?
  var bas: Bas<T, U>?
}
sil_vtable Zim {}

sil @_TFC18field_type_vectors3ZimcU___fMGS0_Q_Q0__FT_GS0_Q_Q0__ : $@convention(method) <T, U> (@owned Zim<T, U>) -> @owned Zim<T, U>

// CHECK-LABEL: @_TMnC18field_type_vectors4Zang = hidden constant
// CHECK:         %swift.type** (%swift.type*)* [[ZANG_TYPES_ACCESSOR:@[A-Za-z0-9_]*]]
// CHECK-LABEL: @_TMPC18field_type_vectors4Zang = hidden global
// -- There should be 16 words between the address point and the field type
//    vector slot, with type %swift.type**
// CHECK:         i64, %swift.type*, %swift.opaque*, %swift.opaque*, i64, i32, i32, i32, i16, i16, i32, i32, i64, i8*, %swift.type*, %swift.type*, i8*, i64, i64, i64, %swift.type*, i64, %swift.type**
class Zang<V>: Zim<V, V> {
  var zung: Int = 0
}
sil_vtable Zang {}

sil @_TFC18field_type_vectors4ZangcU__fMGS0_Q__FT_GS0_Q__ : $@convention(method) <V> (@owned Zang<V>) -> @owned Zang<V>

// -- For storage-qualified fields, we just report the formal type.
class StorageQualified {
  unowned var a: StorageQualified
  weak var b: StorageQualified?

  init(x: StorageQualified) {
    a = x
    b = x
  }
}
sil_vtable StorageQualified {}

// CHECK:       [[FOO_TYPE_VECTOR_SLOT:@.*Foo.*]] = private global %swift.type** null

// CHECK: define{{( protected)?}} private %swift.type** [[FOO_TYPES_ACCESSOR]](%swift.type* %Foo)
// CHECK:   [[EXISTING:%.*]] = load %swift.type**, %swift.type*** [[FOO_TYPE_VECTOR_SLOT]]
// CHECK:   [[IS_NULL:%.*]] = icmp eq %swift.type** [[EXISTING]], null
// CHECK:   br i1 [[IS_NULL]], label %[[BUILD_FIELD_TYPES:.*]], label %[[DONE:.*]]
// CHECK: [[BUILD_FIELD_TYPES]]:
// CHECK:   store {{.*}} @_TMSi
// CHECK:   cmpxchg {{.*}} [[FOO_TYPE_VECTOR_SLOT]]

// CHECK: define{{( protected)?}} private %swift.type** [[BAR_TYPES_ACCESSOR]](%swift.type* %"Bar<T>")
// CHECK:   [[T0:%.*]] = bitcast %swift.type* %"Bar<T>" to %swift.type***
// -- 5 words between the address point and the slot
// CHECK:   [[SLOT:%.*]] = getelementptr inbounds %swift.type**, %swift.type*** [[T0]], i32 5
// CHECK:   load %swift.type**, %swift.type*** [[SLOT]], align 8
// CHECK:   br
// CHECK-NOT: load %swift.type*,
// CHECK:   store {{.*}} @_TMSi


// CHECK: define{{( protected)?}} private %swift.type** [[BAS_TYPES_ACCESSOR]](%swift.type* %"Bas<T, U>")
// CHECK:   [[T0:%.*]] = bitcast %swift.type* %"Bas<T, U>" to %swift.type***
// -- 7 words between the address point and the slot
// CHECK:   [[SLOT:%.*]] = getelementptr inbounds %swift.type**, %swift.type*** [[T0]], i32 7
// CHECK:   load %swift.type**, %swift.type*** [[SLOT]], align 8
// CHECK:   br
// CHECK:   store {{.*}} @_TMfV18field_type_vectors3Foo
// CHECK:   call %swift.type* @_TMaV18field_type_vectors3Bar(%swift.type* %T)

// CHECK: define{{( protected)?}} private %swift.type** [[ZIM_TYPES_ACCESSOR]](%swift.type* %"Zim<T, U>")
// CHECK:   [[T0:%.*]] = bitcast %swift.type* %"Zim<T, U>" to %swift.type***
// -- 14 words between the address point and the slot
// CHECK:   [[SLOT:%.*]] = getelementptr inbounds %swift.type**, %swift.type*** [[T0]], i32 16
// CHECK:   load %swift.type**, %swift.type*** [[SLOT]], align 8

// CHECK: define{{( protected)?}} private %swift.type** [[ZANG_TYPES_ACCESSOR]](%swift.type* %"Zang<V>")
// CHECK:   [[T0:%.*]] = bitcast %swift.type* %"Zang<V>" to %swift.type***
// -- 16 words between the address point and the slot
// CHECK:   [[SLOT:%.*]] = getelementptr inbounds %swift.type**, %swift.type*** [[T0]], i32 18
// CHECK:   load %swift.type**, %swift.type*** [[SLOT]], align 8

