
// This file makes sure that we do not explode dead parameters.

// RUN: %target-sil-opt -enable-sil-verify-all -function-signature-opts %s | %FileCheck %s
// REQUIRES: asserts

sil_stage canonical

class Klass {}
struct S {
  var k1: Klass
  var k2: Klass
}

sil @klass_user : $@convention(thin) (@guaranteed Klass) -> ()

sil @callee : $@convention(thin) (@guaranteed S, @guaranteed S, @guaranteed S) -> () {
bb0(%0 : $S, %1 : $S, %2 : $S):
  %3 = function_ref @klass_user : $@convention(thin) (@guaranteed Klass) -> ()
  %4 = struct_extract %1 : $S, #S.k1
  apply %3(%4) : $@convention(thin) (@guaranteed Klass) -> ()
  %9999 = tuple()
  return %9999 : $()
}

sil @caller : $@convention(thin) (@guaranteed S) -> () {
bb0(%0 : $S):
  %1 = function_ref @callee : $@convention(thin) (@guaranteed S, @guaranteed S, @guaranteed S) -> ()
  apply %1(%0, %0, %0) : $@convention(thin) (@guaranteed S, @guaranteed S, @guaranteed S) -> ()
  %9999 = tuple()
  return %9999 : $()
}

// CHECK-LABEL: sil shared @$s6calleeTf4dxd_n : $@convention(thin) (@guaranteed Klass) -> () {
// CHECK: bb0([[KLASS:%[0-9]+]] : $Klass):
