// 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):