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

// REQUIRES: CPU=x86_64

import Swift

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

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

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

// CHECK-LABEL: @_T018field_type_vectors3ZimCMn = hidden constant
// CHECK:         %swift.type** (%swift.type*)* [[ZIM_TYPES_ACCESSOR:@[A-Za-z0-9_]*]]
// CHECK-LABEL: @_T018field_type_vectors3ZimCMP = internal 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, <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i16, i16, i32, i32, i32, %swift.method_descriptor }>*, 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: @_T018field_type_vectors4ZangCMn = hidden constant
// CHECK:         %swift.type** (%swift.type*)* [[ZANG_TYPES_ACCESSOR:@[A-Za-z0-9_]*]]
// CHECK-LABEL: @_T018field_type_vectors4ZangCMP = internal 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, <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i16, i16, i32 }>*, 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 {{.*}} @_T0SiN
// 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***
// -- 4 words between the address point and the slot
// CHECK:   [[SLOT:%.*]] = getelementptr inbounds %swift.type**, %swift.type*** [[T0]], i32 4
// CHECK:   load %swift.type**, %swift.type*** [[SLOT]], align 8
// CHECK:   br
// CHECK-NOT: load %swift.type*,
// CHECK:   store {{.*}} @_T0SiN


// 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***
// -- 6 words between the address point and the slot
// CHECK:   [[SLOT:%.*]] = getelementptr inbounds %swift.type**, %swift.type*** [[T0]], i32 6
// CHECK:   load %swift.type**, %swift.type*** [[SLOT]], align 8
// CHECK:   br
// CHECK:   store {{.*}} @_T018field_type_vectors3FooVMf
// CHECK:   call %swift.type* @_T018field_type_vectors3BarVMa(%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

