// RUN: %target-sil-opt -assume-parsing-unqualified-ownership-sil -enable-sil-verify-all %s -devirtualizer -sil-combine -enable-resilience -save-optimization-record-path=%t.opt.yaml | %FileCheck %s
sil_stage canonical
// RUN: %FileCheck -check-prefix=YAML -input-file=%t.opt.yaml %s

import Builtin

protocol P {
  func f()
}

extension P {
  func f()
}

class C<T, U> : P {}

sil hidden_external [transparent] [thunk] @witness_thunk : $@convention(witness_method: P) <τ_0_0><τ_1_0, τ_1_1 where τ_0_0 : C<τ_1_0, τ_1_1>> (@in_guaranteed τ_0_0) -> ()

// CHECK-LABEL: sil hidden @caller : $@convention(thin) <T, U> (@owned C<T, U>) -> ()
// CHECK: [[FN:%.*]] = function_ref @witness_thunk
// CHECK: apply [[FN]]<C<T, U>, T, U>(
// CHECK: return

// YAML:      --- !Passed
// YAML-NEXT: Pass:            sil-devirtualizer
// YAML-NEXT: Name:            sil.WitnessMethodDevirtualized
// YAML-NEXT: DebugLoc:
// YAML-NEXT:   File:            {{.*}}/devirt_class_witness_method.sil
// YAML-NEXT:   Line:            47
// YAML-NEXT:   Column:          8
// YAML-NEXT: Function:        caller
// YAML-NEXT: Args:
// YAML-NEXT:   - String:          'Devirtualized call to '
// YAML-NEXT:   - Method:          '"witness_thunk"'
// YAML-NEXT:     DebugLoc:
// YAML-NEXT:       File:            {{.*}}/devirt_class_witness_method.sil
// YAML-NEXT:       Line:            17
// YAML-NEXT:       Column:          44
// YAML-NEXT: ...

sil hidden @caller : $@convention(thin) <T, U> (@owned C<T, U>) -> () {
bb0(%0 : $C<T, U>):
  strong_retain %0 : $C<T, U>
  %4 = alloc_stack $C<T, U>
  store %0 to %4 : $*C<T, U>
  %6 = witness_method $C<T, U>, #P.f!1 : <Self where Self : P> (Self) -> () -> () : $@convention(witness_method: P) <τ_0_0 where τ_0_0 : P> (@in_guaranteed τ_0_0) -> ()
  %7 = apply %6<C<T, U>>(%4) : $@convention(witness_method: P) <τ_0_0 where τ_0_0 : P> (@in_guaranteed τ_0_0) -> ()
  dealloc_stack %4 : $*C<T, U>
  strong_release %0 : $C<T, U>
  %9 = tuple ()
  return %9 : $()
}

sil_vtable C {}

sil_witness_table hidden <T, U> C<T, U>: P module clsx {
  method #P.f!1: <Self where Self : P> (Self) -> () -> () : @witness_thunk
}

sil_default_witness_table hidden P {
}
