// RUN: %target-sil-opt %s | %FileCheck %s

import Builtin
import Swift

// This testing case is extracted from the sil dump of stdlib.
// CHECK-LABEL: sil @test : $@convention(thin) (UnsafeMutablePointer<Optional<AnyObject>>) -> () {
sil @test : $@convention(thin) (UnsafeMutablePointer<Optional<AnyObject>>) -> () {
bb0(%0 : $UnsafeMutablePointer<Optional<AnyObject>>):
  %1 = function_ref @callee1 : $@convention(thin) (UnsafeMutablePointer<OpaquePointer>) -> OpaquePointer
  %2 = struct_extract %0 : $UnsafeMutablePointer<Optional<AnyObject>>, #UnsafeMutablePointer._rawValue
  %3 = struct $UnsafeMutablePointer<OpaquePointer> (%2 : $Builtin.RawPointer)
  %4 = apply %1(%3) : $@convention(thin) (UnsafeMutablePointer<OpaquePointer>) -> OpaquePointer
  %21 = function_ref @callee2 : $@convention(method) <τ_0_0 where τ_0_0 : AnyObject> (Unmanaged<τ_0_0>) -> @owned τ_0_0
  %22 = function_ref @callee3 : $@convention(thin) <τ_0_0 where τ_0_0 : AnyObject> (OpaquePointer, @thin Unmanaged<τ_0_0>.Type) -> Unmanaged<τ_0_0>
  %23 = metatype $@thin Unmanaged<AnyObject>.Type
  // CHECK: apply %{{[0-9]+}}<AnyObject>(%{{[0-9]+}}, %{{[0-9]+}}) : $@convention(thin) <τ_0_0 where τ_0_0 : AnyObject> (OpaquePointer, @thin Unmanaged<τ_0_0>.Type) -> Unmanaged<τ_0_0>
  %24 = apply %22<AnyObject>(%4, %23) : $@convention(thin) <τ_0_0 where τ_0_0 : AnyObject> (OpaquePointer, @thin Unmanaged<τ_0_0>.Type) -> Unmanaged<τ_0_0>
  // CHECK: apply %{{[0-9]+}}<AnyObject>(%{{[0-9]+}}) : $@convention(method) <τ_0_0 where τ_0_0 : AnyObject> (Unmanaged<τ_0_0>) -> @owned τ_0_0
  %25 = apply %21<AnyObject>(%24) : $@convention(method) <τ_0_0 where τ_0_0 : AnyObject> (Unmanaged<τ_0_0>) -> @owned τ_0_0
  %26 = tuple ()
  return %26 : $()
}

sil @callee1 : $@convention(thin) (UnsafeMutablePointer<OpaquePointer>) -> OpaquePointer
sil @callee2 : $@convention(method) <τ_0_0 where τ_0_0 : AnyObject> (Unmanaged<τ_0_0>) -> @owned τ_0_0
sil @callee3 : $@convention(thin) <τ_0_0 where τ_0_0 : AnyObject> (OpaquePointer, @thin Unmanaged<τ_0_0>.Type) -> Unmanaged<τ_0_0>
