mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
43 lines
1.4 KiB
Plaintext
43 lines
1.4 KiB
Plaintext
// RUN: %target-sil-opt -assume-parsing-unqualified-ownership-sil -enable-sil-verify-all %s -sil-combine | %FileCheck %s
|
|
|
|
sil_stage canonical
|
|
|
|
import Builtin
|
|
import Swift
|
|
|
|
//CHECK: sil @a_function1
|
|
//CHECK-NOT: partial_apply
|
|
//CHECK: return
|
|
sil @a_function1 : $@convention(thin) (Int64) -> () {
|
|
bb0(%0 : $Int64):
|
|
%1 = function_ref @our_closure_function1 : $@convention(thin) (Int64) -> Bool // user: %2
|
|
%2 = partial_apply %1(%0) : $@convention(thin) (Int64) -> Bool // user: %3
|
|
strong_release %2 : $@callee_owned () -> Bool // id: %3
|
|
%4 = tuple () // user: %5
|
|
return %4 : $() // id: %5
|
|
}
|
|
|
|
class K {
|
|
}
|
|
|
|
//CHECK: sil @a_function2
|
|
// The release_value of $K is optimized to a strong_release.
|
|
sil @a_function2 : $@convention(thin) (@owned K) -> () {
|
|
bb0(%0 : $K):
|
|
%1 = alloc_ref $K
|
|
%2 = function_ref @our_closure_function2 : $@convention(thin) (@owned K) -> Bool // user: %2
|
|
//CHECK-NOT: partial_apply
|
|
%3 = partial_apply %2(%0) : $@convention(thin) (@owned K) -> Bool // user: %3
|
|
//CHECK: br
|
|
br bb1
|
|
bb1:
|
|
//CHECK: strong_release
|
|
strong_release %3 : $@callee_owned () -> Bool // id: %3
|
|
%5 = tuple () // user: %5
|
|
//CHECK: return
|
|
return %5 : $() // id: %5
|
|
}
|
|
|
|
sil @our_closure_function2 : $@convention(thin) (@owned K) -> Bool
|
|
sil @our_closure_function1 : $@convention(thin) (Int64) -> Bool
|