|
5 | 5 |
|
6 | 6 | // REQUIRES: OS=macosx
|
7 | 7 |
|
8 |
| -// -- Fallback definition of genericFunc() |
| 8 | +// -- Fallback definition of genericFunc(_:) |
9 | 9 | // CHECK-LABEL: sil non_abi [serialized] [ossa] @$s11back_deploy11genericFuncyxxlFTwB : $@convention(thin) <T> (@in_guaranteed T) -> @out T
|
10 | 10 | // CHECK: bb0([[OUT_ARG:%.*]] : $*T, [[IN_ARG:%.*]] : $*T):
|
11 | 11 | // CHECK: copy_addr [[IN_ARG]] to [init] [[OUT_ARG]] : $*T
|
12 | 12 | // CHECK: [[RESULT:%.*]] = tuple ()
|
13 | 13 | // CHECK: return [[RESULT]] : $()
|
14 | 14 |
|
15 |
| -// -- Back deployment thunk for genericFunc() |
| 15 | +// -- Back deployment thunk for genericFunc(_:) |
16 | 16 | // CHECK-LABEL: sil non_abi [serialized] [thunk] [ossa] @$s11back_deploy11genericFuncyxxlFTwb : $@convention(thin) <T> (@in_guaranteed T) -> @out T
|
17 | 17 | // CHECK: bb0([[OUT_ARG:%.*]] : $*T, [[IN_ARG:%.*]] : $*T):
|
18 | 18 | // CHECK: [[MAJOR:%.*]] = integer_literal $Builtin.Word, 10
|
|
36 | 36 | // CHECK: [[RESULT:%.*]] = tuple ()
|
37 | 37 | // CHECK: return [[RESULT]] : $()
|
38 | 38 |
|
39 |
| -// -- Original definition of genericFunc() |
| 39 | +// -- Original definition of genericFunc(_:) |
40 | 40 | // CHECK-LABEL: sil [available 10.52] [ossa] @$s11back_deploy11genericFuncyxxlF : $@convention(thin) <T> (@in_guaranteed T) -> @out T
|
41 | 41 | @_backDeploy(before: macOS 10.52)
|
42 | 42 | public func genericFunc<T>(_ t: T) -> T {
|
43 | 43 | return t
|
44 | 44 | }
|
45 | 45 |
|
| 46 | +// -- Fallback definition of genericFuncWithOwnedParam(_:) |
| 47 | +// CHECK-LABEL: sil non_abi [serialized] [ossa] @$s11back_deploy25genericFuncWithOwnedParamyyxnlFTwB : $@convention(thin) <T> (@in T) -> () |
| 48 | +// CHECK: bb0([[IN_ARG:%.*]] : $*T): |
| 49 | +// CHECK: destroy_addr [[IN_ARG]] : $*T |
| 50 | +// CHECK: [[RESULT:%.*]] = tuple () |
| 51 | +// CHECK: return [[RESULT]] : $() |
| 52 | + |
| 53 | +// -- Back deployment thunk for genericFuncWithOwnedParam(_:) |
| 54 | +// CHECK-LABEL: sil non_abi [serialized] [thunk] [ossa] @$s11back_deploy25genericFuncWithOwnedParamyyxnlFTwb : $@convention(thin) <T> (@in T) -> () |
| 55 | +// CHECK: bb0([[IN_ARG:%.*]] : $*T): |
| 56 | +// CHECK: [[MAJOR:%.*]] = integer_literal $Builtin.Word, 10 |
| 57 | +// CHECK: [[MINOR:%.*]] = integer_literal $Builtin.Word, 52 |
| 58 | +// CHECK: [[PATCH:%.*]] = integer_literal $Builtin.Word, 0 |
| 59 | +// CHECK: [[OSVFN:%.*]] = function_ref @$ss26_stdlib_isOSVersionAtLeastyBi1_Bw_BwBwtF : $@convention(thin) (Builtin.Word, Builtin.Word, Builtin.Word) -> Builtin.Int1 |
| 60 | +// CHECK: [[AVAIL:%.*]] = apply [[OSVFN]]([[MAJOR]], [[MINOR]], [[PATCH]]) : $@convention(thin) (Builtin.Word, Builtin.Word, Builtin.Word) -> Builtin.Int1 |
| 61 | +// CHECK: cond_br [[AVAIL]], [[AVAIL_BB:bb[0-9]+]], [[UNAVAIL_BB:bb[0-9]+]] |
| 62 | +// |
| 63 | +// CHECK: [[UNAVAIL_BB]]: |
| 64 | +// CHECK: [[FALLBACKFN:%.*]] = function_ref @$s11back_deploy25genericFuncWithOwnedParamyyxnlFTwB : $@convention(thin) <τ_0_0> (@in τ_0_0) -> () |
| 65 | +// CHECK: {{%.*}} = apply [[FALLBACKFN]]<T>([[IN_ARG]]) : $@convention(thin) <τ_0_0> (@in τ_0_0) -> () |
| 66 | +// CHECK: br [[RETURN_BB:bb[0-9]+]] |
| 67 | +// |
| 68 | +// CHECK: [[AVAIL_BB]]: |
| 69 | +// CHECK: [[ORIGFN:%.*]] = function_ref @$s11back_deploy25genericFuncWithOwnedParamyyxnlF : $@convention(thin) <τ_0_0> (@in τ_0_0) -> () |
| 70 | +// CHECK: {{%.*}} = apply [[ORIGFN]]<T>([[IN_ARG]]) : $@convention(thin) <τ_0_0> (@in τ_0_0) -> () |
| 71 | +// CHECK: br [[RETURN_BB]] |
| 72 | +// |
| 73 | +// CHECK: [[RETURN_BB]] |
| 74 | +// CHECK-NOT: destroy_addr |
| 75 | +// CHECK: [[RESULT:%.*]] = tuple () |
| 76 | +// CHECK: return [[RESULT]] : $() |
| 77 | + |
| 78 | +// -- Original definition of genericFuncWithOwnedParam(_:) |
| 79 | +// CHECK-LABEL: sil [available 10.52] [ossa] @$s11back_deploy25genericFuncWithOwnedParamyyxnlF : $@convention(thin) <T> (@in T) -> () |
| 80 | +@_backDeploy(before: macOS 10.52) |
| 81 | +public func genericFuncWithOwnedParam<T>(_ t: __owned T) { } |
| 82 | + |
| 83 | +struct S {} |
| 84 | + |
46 | 85 | // CHECK-LABEL: sil hidden [ossa] @$s11back_deploy6calleryyF : $@convention(thin) () -> ()
|
47 | 86 | func caller() {
|
48 |
| - // -- Verify the thunk is called |
| 87 | + // -- Verify the thunks are called |
49 | 88 | // CHECK: {{%.*}} = function_ref @$s11back_deploy11genericFuncyxxlFTwb : $@convention(thin) <τ_0_0> (@in_guaranteed τ_0_0) -> @out τ_0_0
|
50 |
| - _ = genericFunc(Int32(1)) |
| 89 | + _ = genericFunc(S()) |
| 90 | + |
| 91 | + // CHECK: {{%.*}} = function_ref @$s11back_deploy25genericFuncWithOwnedParamyyxnlFTwb : $@convention(thin) <τ_0_0> (@in τ_0_0) -> () |
| 92 | + genericFuncWithOwnedParam(S()) |
51 | 93 | }
|
0 commit comments