// RUN: %target-sil-opt -assume-parsing-unqualified-ownership-sil -enable-sil-verify-all -dead-arg-signature-opt %s | %FileCheck %s

import Builtin
import Swift

// Specialize to a function with removed dead argument.

// CHECK-LABEL: sil [thunk] [always_inline] @one_arg_dead
// CHECK: [[F:%[0-9]+]] = function_ref @_TTSf4n_n_d__one_arg_dead
// CHECK: [[A:%[0-9]+]] = apply [[F]](%0, %1)
// CHECK: return [[A]]
sil @one_arg_dead : $@convention(method) (Int32, Int32, @thin Int32.Type) -> Bool {
bb0(%0 : $Int32, %1 : $Int32, %2 : $@thin Int32.Type):
  %5 = struct_extract %0 : $Int32, #Int32._value
  %6 = struct_extract %1 : $Int32, #Int32._value
  %7 = builtin "cmp_slt_Int32"(%5 : $Builtin.Int32, %6 : $Builtin.Int32) : $Builtin.Int1
  %8 = struct $Bool (%7 : $Builtin.Int1)
  return %8 : $Bool
}


// Still delete only one dead arg as only one arg is partially applied.

// CHECK-LABEL: sil [thunk] [always_inline] @two_args_dead
// CHECK: [[F:%[0-9]+]] = function_ref @_TTSf4n_n_d__two_args_dead
// CHECK: [[A:%[0-9]+]] = apply [[F]](%0, %1)
// CHECK: return [[A]]
sil @two_args_dead : $@convention(method) (Int32, Int32, @thin Int32.Type) -> Bool {
bb0(%0 : $Int32, %1 : $Int32, %2 : $@thin Int32.Type):
  %5 = struct_extract %0 : $Int32, #Int32._value
  %7 = builtin "cmp_slt_Int32"(%5 : $Builtin.Int32, %5 : $Builtin.Int32) : $Builtin.Int1
  %8 = struct $Bool (%7 : $Builtin.Int1)
  return %8 : $Bool
}

// Don't specialize at this function is not partially applied.

// CHECK-LABEL: sil @not_used
// CHECK-NOT: apply
// CHECK: return
sil @not_used : $@convention(method) (Int32, Int32, @thin Int32.Type) -> Bool {
bb0(%0 : $Int32, %1 : $Int32, %2 : $@thin Int32.Type):
  %5 = struct_extract %0 : $Int32, #Int32._value
  %6 = struct_extract %1 : $Int32, #Int32._value
  %7 = builtin "cmp_slt_Int32"(%5 : $Builtin.Int32, %6 : $Builtin.Int32) : $Builtin.Int1
  %8 = struct $Bool (%7 : $Builtin.Int1)
  return %8 : $Bool
}

sil @partial_apply_one_arg_dead : $@convention(thin) () -> @owned @callee_owned (Int32, Int32) -> Bool {
bb0:
  %0 = metatype $@thin Int32.Type
  %1 = function_ref @one_arg_dead : $@convention(method) (Int32, Int32, @thin Int32.Type) -> Bool
  %2 = partial_apply %1(%0) : $@convention(method) (Int32, Int32, @thin Int32.Type) -> Bool
  return %2 : $@callee_owned (Int32, Int32) -> Bool
}

sil @partial_apply_two_args_dead : $@convention(thin) () -> @owned @callee_owned (Int32, Int32) -> Bool {
bb0:
  %0 = metatype $@thin Int32.Type
  %1 = function_ref @two_args_dead : $@convention(method) (Int32, Int32, @thin Int32.Type) -> Bool
  %2 = partial_apply %1(%0) : $@convention(method) (Int32, Int32, @thin Int32.Type) -> Bool
  return %2 : $@callee_owned (Int32, Int32) -> Bool
}

// CHECK-LABEL: sil @_TTSf4n_n_d__one_arg_dead
// CHECK: builtin
// CHECK: return

// CHECK-LABEL: sil @_TTSf4n_n_d__two_args_dead
// CHECK: builtin
// CHECK: return
