| // REQUIRES: plus_zero_runtime |
| // RUN: %target-swift-frontend -emit-sil -O -primary-file %s | %FileCheck %s |
| |
| // REQUIRES: objc_interop |
| |
| import Foundation |
| |
| @objc protocol P {} |
| |
| @_optimize(none) |
| func takesP<T : P>(_: T) {} |
| |
| @inline(__always) |
| func callsTakesP<T : P>(_ t: T) { |
| takesP(t) |
| } |
| |
| // CHECK-LABEL: sil hidden @$S26specialize_self_conforming16callsTakesPWithPyyAA1P_pF : $@convention(thin) (@guaranteed P) -> () { |
| // CHECK: [[FN:%.*]] = function_ref @$S26specialize_self_conforming6takesPyyxAA1PRzlF : $@convention(thin) <τ_0_0 where τ_0_0 : P> (@guaranteed τ_0_0) -> () |
| // CHECK: apply [[FN]]<P>(%0) : $@convention(thin) <τ_0_0 where τ_0_0 : P> (@guaranteed τ_0_0) -> () |
| // CHECK: return |
| |
| func callsTakesPWithP(_ p: P) { |
| callsTakesP(p) |
| } |