// RUN: %target-swift-frontend -enable-objc-interop -emit-ir %s | %FileCheck %s -check-prefix CHECK -check-prefix CHECK-%target-import-type

// REQUIRES: CPU=x86_64

// CHECK: [[OBJCCLASS:%objc_class]] = type
// CHECK: [[OPAQUE:%swift.opaque]] = type opaque
// CHECK: [[TYPE:%swift.type]] = type

// CHECK-LABEL: @"$s14ivar_destroyer17NonTrivialDerivedCMf" = internal global <{ {{.*}} }> <{
// CHECK-SAME:    i8* null,
// CHECK-SAME:    i8** {{@"\$sBoWV"|null}},
// CHECK-SAME:    i64 ptrtoint ([[OBJCCLASS]]* @"$s14ivar_destroyer17NonTrivialDerivedCMm" to i64),
// CHECK-DIRECT-SAME:    [[TYPE]]* bitcast (i64* getelementptr inbounds (<{ {{.*}} }>, <{ {{.*}} }>* @"$s14ivar_destroyer11TrivialBaseCMf", i32 0, i32 2) to [[TYPE]]*),
// CHECK-INDIRECT-SAME:  [[TYPE]]* null,
// CHECK-SAME:    [[OPAQUE]]* @_objc_empty_cache,
// CHECK-SAME:    [[OPAQUE]]* null,
// CHECK-SAME:    i64 add (i64 ptrtoint ({{.*}}* @_DATA__TtC14ivar_destroyer17NonTrivialDerived to i64), i64 {{1|2}}),
// CHECK-SAME:    i32 {{3|2}},
// CHECK-SAME:    i32 0,
// CHECK-SAME:    i32 24,
// CHECK-SAME:    i16 7,
// CHECK-SAME:    i16 0,
// CHECK-SAME:    i32 112,
// CHECK-SAME:    i32 16,
// CHECK-SAME:    <{ {{.*}} }>* @"$s14ivar_destroyer17NonTrivialDerivedCMn"
// CHECK-SAME:    void (%T14ivar_destroyer17NonTrivialDerivedC*)* @"$s14ivar_destroyer17NonTrivialDerivedCfE",
// CHECK-SAME:    %T14ivar_destroyer17NonTrivialDerivedC* ([[TYPE]]*)* @alloc_NonTrivialDerived
// CHECK-DIRECT-SAME:    i64 16
// CHECK-INDIRECT-SAME:  i64 0
// CHECK-SAME:  }>

class Pachyderm {}
sil_vtable Pachyderm {}

class TrivialBase {}

sil public_external @alloc_TrivialBase : $@convention(method) (@thick TrivialBase.Type) -> @owned TrivialBase

sil_vtable TrivialBase {
  #TrivialBase.init!allocator.1: @alloc_TrivialBase
}

class NonTrivialDerived : TrivialBase {
  let p: Pachyderm

  required override init()
}

sil public_external @alloc_NonTrivialDerived : $@convention(method) (@thick NonTrivialDerived.Type) -> @owned NonTrivialDerived
sil public_external @$s14ivar_destroyer17NonTrivialDerivedCfE : $@convention(method) (@guaranteed NonTrivialDerived) -> ()

sil_vtable NonTrivialDerived {
  #TrivialBase.init!allocator.1: @alloc_NonTrivialDerived [override]
  #NonTrivialDerived!ivardestroyer.1: @$s14ivar_destroyer17NonTrivialDerivedCfE
}
