| // RUN: %target-sil-opt -enable-sil-verify-all -generic-specializer %/s | %FileCheck %s |
| |
| sil_stage canonical |
| |
| import Builtin |
| import Swift |
| |
| sil [ossa] [transparent] @ossaTransparentCallee : $@convention(thin) <T> (@in T) -> () { |
| bb0(%0 : $*T): |
| destroy_addr %0 : $*T |
| %9999 = tuple() |
| return %9999 : $() |
| } |
| |
| // CHECK-LABEL: sil @caller : $@convention(thin) (@owned Builtin.NativeObject) -> () { |
| // CHECK: [[FUNC:%.*]] = function_ref @ossaTransparentCallee : $@convention(thin) <τ_0_0> (@in τ_0_0) -> () |
| // CHECK: apply [[FUNC]]<Builtin.NativeObject>( |
| // CHECK: } // end sil function 'caller' |
| sil @caller : $@convention(thin) (@owned Builtin.NativeObject) -> () { |
| bb0(%0 : $Builtin.NativeObject): |
| %1 = function_ref @ossaTransparentCallee : $@convention(thin) <τ_0_0> (@in τ_0_0) -> () |
| %2 = alloc_stack $Builtin.NativeObject |
| store %0 to %2 : $*Builtin.NativeObject |
| apply %1<Builtin.NativeObject>(%2) : $@convention(thin) <τ_0_0> (@in τ_0_0) -> () |
| dealloc_stack %2 : $*Builtin.NativeObject |
| %9999 = tuple() |
| return %9999 : $() |
| } |