Files
swift-mirror/test/SIL/Parser/apply_with_conformance.sil
Michael Gottesman af565e7cc0 [sil-parser] Fix harmless bug when parsing ossa.
Specifically, we were preferring the always correct ownership kind specified by
the FunctionType and ignoring what we parsed from the argument. This PR changes
ossa to give a nice error when this is detected and fixes the places where this
tests were written incorrectly.
2019-08-27 10:18:49 -07:00

40 lines
1.3 KiB
Plaintext

// RUN: %target-swift-frontend -emit-ir %s | %FileCheck %s
// radar://16375832
sil_stage raw
import Builtin
import Swift
protocol P {
}
struct X : P {
}
struct S {
func foo<T : P>(t: T)
}
// test.S.foo (test.S)<A : test.P>(A) -> ()
sil @_TFV4test1S3foofS0_US_1P__FQ_T_ : $@convention(method) <T where T : P> (@in T, S) -> ()
// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc void @_TF4test3barFTVS_1SVS_1X_T_()
// CHECK: call
// test.bar (test.S, test.X) -> ()
sil [ossa] @_TF4test3barFTVS_1SVS_1X_T_ : $@convention(thin) (S, X) -> () {
bb0(%0 : $S, %1 : $X):
debug_value %0 : $S // let s // id: %2
debug_value %1 : $X // let x // id: %3
// function_ref test.S.foo (test.S)<A : test.P>(A) -> ()
%4 = function_ref @_TFV4test1S3foofS0_US_1P__FQ_T_ : $@convention(method) <τ_0_0 where τ_0_0 : P> (@in τ_0_0, S) -> () // user: %7
%5 = alloc_stack $X // users: %6, %7, %8
store %1 to [trivial] %5 : $*X // id: %6
%7 = apply %4<X>(%5, %0) : $@convention(method) <τ_0_0 where τ_0_0 : P> (@in τ_0_0, S) -> ()
dealloc_stack %5 : $*X // id: %8
%9 = tuple () // user: %10
return %9 : $() // id: %10
}
sil_witness_table X: P module test {
}