// RUN: %target-sil-opt -enable-sil-opaque-values -assume-parsing-unqualified-ownership-sil -enable-sil-verify-all -generic-specializer %s | %FileCheck %s

sil_stage canonical

import Builtin

// Test that foo is specialized on Builtin.Int64 and the copy_values and destroy_values are dropped.
//
// CHECK-LABEL: sil shared @_T03fooBi64__Tg5 : $@convention(thin) (Builtin.Int64, Builtin.Int64) -> () {
// CHECK: bb0(%0 : $Builtin.Int64, %1 : $Builtin.Int64):
// CHECK:   [[F:%.*]] = function_ref @_T03fooBi64__Tg5 : $@convention(thin) (Builtin.Int64, Builtin.Int64) -> ()
// CHECK:   %{{.*}} = apply [[F]](%0, %1) : $@convention(thin) (Builtin.Int64, Builtin.Int64) -> ()
// CHECK-NOT: copy_value
// CHECK-NOT: destroy_value
// CHECK:   return %{{.*}} : $()
// CHECK-LABEL: } // end sil function '_T03fooBi64__Tg5'
sil hidden @foo : $@convention(thin) <T> (@in T, @in T) -> () {
bb0(%0 : $T, %1 : $T):
  %f = function_ref @foo : $@convention(thin) <τ_0_0> (@in τ_0_0, @in τ_0_0) -> ()
  %cp0 = copy_value %0 : $T
  %cp1 = copy_value %1 : $T
  %call = apply %f<T>(%cp0, %cp1) : $@convention(thin) <τ_0_0> (@in τ_0_0, @in τ_0_0) -> ()
  destroy_value %1 : $T
  destroy_value %0 : $T
  %10 = tuple ()
  return %10 : $()
}

sil @testSpecialize : $@convention(thin) (Builtin.Int64) -> () {
bb0(%0: $Builtin.Int64):
  %f = function_ref @foo : $@convention(thin) <T> (@in T, @in T) -> ()
  %call = apply %f<Builtin.Int64>(%0, %0) : $@convention(thin) <τ_0_0> (@in τ_0_0, @in τ_0_0) -> ()
  %999 = tuple ()
  return %999 : $()
}
