// RUN: %target-swift-frontend -enable-objc-interop -emit-ir %s | %FileCheck %s -DINT=i%target-ptrsize
// RUN: %target-swift-frontend -Osize -enable-objc-interop -emit-ir %s | %FileCheck %s --check-prefix=OSIZE -DINT=i%target-ptrsize

// REQUIRES: CPU=x86_64

sil_stage canonical

import Builtin

struct S {}

class C {}
sil_vtable C {}

sil @_TFC12typemetadata1Cd : $@convention(method) (@owned C) -> @owned Builtin.NativeObject

sil @_TFC12typemetadata1CD : $@convention(method) (@owned C) -> ()

sil @test0 : $@convention(thin) () -> () {
bb0:
  %0 = metatype $@thin S.Type
  %1 = metatype $@thick C.Type
  %2 = metatype $@thick (S, C).Type
  %100 = tuple ()
  return %100 : $()
}

// CHECK-LABEL: define hidden swiftcc %swift.metadata_response @"$s12typemetadata1CCMa"
// CHECK-SAME:    ([[INT]])
// CHECK:      [[T0:%.*]] = load %swift.type*, %swift.type**  @"$s12typemetadata1CCML", align 8
// CHECK-NEXT: [[T1:%.*]] = icmp eq %swift.type* [[T0]], null
// CHECK-NEXT: br i1 [[T1]]
// CHECK:      [[T0:%.*]] = call %objc_class* @swift_getInitializedObjCClass({{.*}} @"$s12typemetadata1CCMf", {{.*}})
// CHECK-NEXT: [[T1:%.*]] = bitcast %objc_class* [[T0]] to %swift.type*
// CHECK:      store atomic %swift.type* [[T1]], %swift.type** @"$s12typemetadata1CCML" release, align 8
// CHECK-NEXT: br label
// CHECK:      [[RES:%.*]] = phi
// CHECK-NEXT: [[T0:%.*]] = insertvalue %swift.metadata_response undef, %swift.type* [[RES]], 0
// CHECK-NEXT: [[T1:%.*]] = insertvalue %swift.metadata_response [[T0]], i64 0, 1
// CHECK-NEXT: ret %swift.metadata_response [[T1]]

// CHECK-LABEL: define linkonce_odr hidden swiftcc %swift.metadata_response @"$s12typemetadata1SV_AA1CCtMa"
// CHECK-SAME:    ([[INT]])
// CHECK:      [[T0:%.*]] = load %swift.type*, %swift.type**  @"$s12typemetadata1SV_AA1CCtML", align 8
// CHECK-NEXT: [[T1:%.*]] = icmp eq %swift.type* [[T0]], null
// CHECK-NEXT: br i1 [[T1]]
// CHECK:      [[TMP:%.*]] = call swiftcc %swift.metadata_response @"$s12typemetadata1CCMa"([[INT]] 255)
// CHECK:      [[T0:%.*]] = extractvalue %swift.metadata_response [[TMP]], 0
// CHECK-NEXT: extractvalue %swift.metadata_response [[TMP]], 1
// CHECK-NEXT: [[T1:%.*]] = call swiftcc %swift.metadata_response @swift_getTupleTypeMetadata2([[INT]] %0, %swift.type* {{.*}} @"$s12typemetadata1SVMf", {{.*}} %swift.type* [[T0]], i8* null, i8** null)
// CHECK-NEXT: [[METADATA:%.*]] = extractvalue %swift.metadata_response [[T1]], 0
// CHECK-NEXT: [[STATE:%.*]] = extractvalue %swift.metadata_response [[T1]], 1
// CHECK-NEXT: [[T0:%.*]] = icmp eq [[INT]] [[STATE]], 0
// CHECK-NEXT: br i1 [[T0]],
// CHECK:      store atomic %swift.type* [[METADATA]], %swift.type** @"$s12typemetadata1SV_AA1CCtML" release, align 8
// CHECK-NEXT: br label
// CHECK:      [[RES:%.*]] = phi %swift.type*
// CHECK-NEXT: [[RES_STATE:%.*]] = phi [[INT]]
// CHECK-NEXT: [[T0:%.*]] = insertvalue %swift.metadata_response undef, %swift.type* [[RES]], 0
// CHECK-NEXT: [[T1:%.*]] = insertvalue %swift.metadata_response [[T0]], [[INT]] [[RES_STATE]], 1
// CHECK-NEXT: ret %swift.metadata_response [[T1]]

// OSIZE: define hidden swiftcc %swift.metadata_response @"$s12typemetadata1CCMa"
// OSIZE-SAME:   ([[INT]]) [[ATTR:#[0-9]+]] {
// OSIZE: [[ATTR]] = {{{.*}}noinline

