// RUN: %target-sil-opt -enable-sil-verify-all %s -sil-combine | FileCheck %s

// REQUIRES: objc_interop

sil_stage canonical

import Builtin
import Swift
import SwiftShims

@objc(XX) protocol X {
}

class XImpl : X {
  @objc deinit
  init()
}

// (thick_to_objc_metatype (metatype @thick)) -> (metatype @objc_metatype)
//
// CHECK-LABEL: sil @_TF31peephole_thick_to_objc_metatype36test_thick_to_objc_metatype_metatypeFT_Ps9AnyObject_ : $@convention(thin) () -> @owned AnyObject
// CHECK-NOT: metatype $@thick
// CHECK-NOT: {{thick_to_objc_metatype }}
// CHECK: metatype $@objc_metatype
// CHECK: return
// peephole_thick_to_objc_metatype.test_thick_to_objc_metatype_metatype () -> Swift.AnyObject
sil @_TF31peephole_thick_to_objc_metatype36test_thick_to_objc_metatype_metatypeFT_Ps9AnyObject_ : $@convention(thin) () -> @owned AnyObject {
bb0:
  %0 = metatype $@thick XImpl.Type                // users: %1, %2
  %2 = thick_to_objc_metatype %0 : $@thick XImpl.Type to $@objc_metatype XImpl.Type // user: %3
  %3 = objc_metatype_to_object %2 : $@objc_metatype XImpl.Type to $AnyObject // user: %4
  return %3 : $AnyObject                          // id: %4
}

// (thick_to_objc_metatype (existential_metatype @thick)) -> (existential_metatype @objc_metatype)
//
// CHECK-LABEL: sil @_TF31peephole_thick_to_objc_metatype48test_thick_to_objc_metatype_existential_metatypeFPS_1X_Ps9AnyObject_ : $@convention(thin) (@owned X) -> @owned AnyObject
// CHECK-NOT: existential_metatype $@thick
// CHECK-NOT: {{thick_to_objc_metatype }}
// CHECK: existential_metatype $@objc_metatype
// CHECK: return
// peephole_thick_to_objc_metatype.test_thick_to_objc_metatype_existential_metatype (peephole_thick_to_objc_metatype.X) -> Swift.AnyObject
sil @_TF31peephole_thick_to_objc_metatype48test_thick_to_objc_metatype_existential_metatypeFPS_1X_Ps9AnyObject_ : $@convention(thin) (@owned X) -> @owned AnyObject {
bb0(%0 : $X):
  debug_value %0 : $X, let, name "o" // id: %1
  %2 = existential_metatype $@thick X.Type, %0 : $X // user: %3
  %3 = thick_to_objc_metatype %2 : $@thick X.Type to $@objc_metatype X.Type // user: %4
  %4 = objc_existential_metatype_to_object %3 : $@objc_metatype X.Type to $AnyObject // users: %5, %7
  debug_value %4 : $AnyObject, let, name "Ty" // id: %5
  strong_release %0 : $X                          // id: %6
  return %4 : $AnyObject                          // id: %7
}

// (thick_to_objc_metatype (value_metatype @thick)) -> (value_metatype @objc_metatype)
//
// CHECK-LABEL: sil @_TF31peephole_thick_to_objc_metatype42test_thick_to_objc_metatype_value_metatypeUs9AnyObject__FQ_PS0__ : $@convention(thin) <T where T : AnyObject> (@owned T) -> @owned An
// CHECK-NOT: value_metatype $@thick
// CHECK-NOT: {{thick_to_objc_metatype }}
// CHECK: value_metatype $@objc_metatype
// CHECK: return
// peephole_thick_to_objc_metatype.test_thick_to_objc_metatype_value_metatype <A : Swift.AnyObject>(A) -> Swift.AnyObject
sil @_TF31peephole_thick_to_objc_metatype42test_thick_to_objc_metatype_value_metatypeUs9AnyObject__FQ_PS0__ : $@convention(thin) <T where T : AnyObject> (@owned T) -> @owned AnyObject {
bb0(%0 : $T):
  debug_value %0 : $T, let, name "o" // id: %1
  %2 = value_metatype $@thick T.Type, %0 : $T     // user: %3
  %3 = thick_to_objc_metatype %2 : $@thick T.Type to $@objc_metatype T.Type // user: %4
  %4 = objc_metatype_to_object %3 : $@objc_metatype T.Type to $AnyObject // users: %5, %7
  debug_value %4 : $AnyObject, let, name "Ty" // id: %5
  strong_release %0 : $T                          // id: %6
  return %4 : $AnyObject                          // id: %7
}

// (objc_to_thick_metatype (metatype @objc_metatype)) -> (metatype @thick)
//
// CHECK-LABEL: sil @_TF31peephole_thick_to_objc_metatype36test_objc_to_thick_metatype_metatypeFT_Ps9AnyObject_ : $@convention(thin) () -> @thick XImpl.Type
// CHECK-NOT: metatype $@objc_metatype
// CHECK-NOT: {{objc_to_thick_metatype }}
// CHECK: metatype $@thick
// CHECK: return
sil @_TF31peephole_thick_to_objc_metatype36test_objc_to_thick_metatype_metatypeFT_Ps9AnyObject_ : $@convention(thin) () -> @thick XImpl.Type {
bb0:
  %0 = metatype $@objc_metatype XImpl.Type                // users: %1, %2
  %2 = objc_to_thick_metatype %0 : $@objc_metatype XImpl.Type to $@thick XImpl.Type
  return %2 : $@thick XImpl.Type
}

// (objc_to_objc_metatype (existential_metatype @objc_metatype)) -> (existential_metatype @thick)
//
// CHECK-LABEL: sil @_TF31peephole_thick_to_objc_metatype48test_objc_to_thick_metatype_existential_metatypeFPS_1X_Ps9AnyObject_ : $@convention(thin) (@owned X) -> @thick X.Type
// CHECK-NOT: existential_metatype $@objc_metatype
// CHECK-NOT: {{objc_to_thick_metatype }}
// CHECK: existential_metatype $@thick
// CHECK: return
sil @_TF31peephole_thick_to_objc_metatype48test_objc_to_thick_metatype_existential_metatypeFPS_1X_Ps9AnyObject_ : $@convention(thin) (@owned X) -> @thick X.Type {
bb0(%0 : $X):
  debug_value %0 : $X, let, name "o" // id: %1
  %2 = existential_metatype $@objc_metatype X.Type, %0 : $X // user: %3
  %3 = objc_to_thick_metatype %2 : $@objc_metatype X.Type to $@thick X.Type // user: %4
  strong_release %0 : $X
  return %3 : $@thick X.Type
}

// (objc_to_thick_metatype (value_metatype @objc_metatype)) -> (value_metatype @thick)
//
// CHECK-LABEL: sil @_TF31peephole_thick_to_objc_metatype42test_objc_to_thick_metatype_value_metatypeUs9AnyObject__FQ_PS0__ : $@convention(thin) <T where T : AnyObject> (@owned T) -> @thick T.Type
// CHECK-NOT: value_metatype $@objc_metatype
// CHECK-NOT: {{objc_to_thick_metatype }}
// CHECK: value_metatype $@thick
// CHECK: return
sil @_TF31peephole_thick_to_objc_metatype42test_objc_to_thick_metatype_value_metatypeUs9AnyObject__FQ_PS0__ : $@convention(thin) <T where T : AnyObject> (@owned T) -> @thick T.Type {
bb0(%0 : $T):
  debug_value %0 : $T, let, name "o" // id: %1
  %2 = value_metatype $@objc_metatype T.Type, %0 : $T     // user: %3
  %3 = objc_to_thick_metatype %2 : $@objc_metatype T.Type to $@thick T.Type // user: %4
  strong_release %0 : $T
  return %3 : $@thick T.Type
}
