mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
28 lines
2.1 KiB
Plaintext
28 lines
2.1 KiB
Plaintext
// RUN: %target-sil-opt -assume-parsing-unqualified-ownership-sil %s | %FileCheck %s
|
|
|
|
import Builtin
|
|
import Swift
|
|
|
|
// This testing case is extracted from the sil dump of stdlib.
|
|
// CHECK-LABEL: sil @test : $@convention(thin) (UnsafeMutablePointer<Optional<AnyObject>>) -> () {
|
|
sil @test : $@convention(thin) (UnsafeMutablePointer<Optional<AnyObject>>) -> () {
|
|
bb0(%0 : $UnsafeMutablePointer<Optional<AnyObject>>):
|
|
%1 = function_ref @callee1 : $@convention(thin) (UnsafeMutablePointer<OpaquePointer>) -> OpaquePointer
|
|
%2 = struct_extract %0 : $UnsafeMutablePointer<Optional<AnyObject>>, #UnsafeMutablePointer._rawValue
|
|
%3 = struct $UnsafeMutablePointer<OpaquePointer> (%2 : $Builtin.RawPointer)
|
|
%4 = apply %1(%3) : $@convention(thin) (UnsafeMutablePointer<OpaquePointer>) -> OpaquePointer
|
|
%21 = function_ref @callee2 : $@convention(method) <τ_0_0 where τ_0_0 : AnyObject> (Unmanaged<τ_0_0>) -> @owned τ_0_0
|
|
%22 = function_ref @callee3 : $@convention(thin) <τ_0_0 where τ_0_0 : AnyObject> (OpaquePointer, @thin Unmanaged<τ_0_0>.Type) -> Unmanaged<τ_0_0>
|
|
%23 = metatype $@thin Unmanaged<AnyObject>.Type
|
|
// CHECK: apply %{{[0-9]+}}<AnyObject>(%{{[0-9]+}}, %{{[0-9]+}}) : $@convention(thin) <τ_0_0 where τ_0_0 : AnyObject> (OpaquePointer, @thin Unmanaged<τ_0_0>.Type) -> Unmanaged<τ_0_0>
|
|
%24 = apply %22<AnyObject>(%4, %23) : $@convention(thin) <τ_0_0 where τ_0_0 : AnyObject> (OpaquePointer, @thin Unmanaged<τ_0_0>.Type) -> Unmanaged<τ_0_0>
|
|
// CHECK: apply %{{[0-9]+}}<AnyObject>(%{{[0-9]+}}) : $@convention(method) <τ_0_0 where τ_0_0 : AnyObject> (Unmanaged<τ_0_0>) -> @owned τ_0_0
|
|
%25 = apply %21<AnyObject>(%24) : $@convention(method) <τ_0_0 where τ_0_0 : AnyObject> (Unmanaged<τ_0_0>) -> @owned τ_0_0
|
|
%26 = tuple ()
|
|
return %26 : $()
|
|
}
|
|
|
|
sil @callee1 : $@convention(thin) (UnsafeMutablePointer<OpaquePointer>) -> OpaquePointer
|
|
sil @callee2 : $@convention(method) <τ_0_0 where τ_0_0 : AnyObject> (Unmanaged<τ_0_0>) -> @owned τ_0_0
|
|
sil @callee3 : $@convention(thin) <τ_0_0 where τ_0_0 : AnyObject> (OpaquePointer, @thin Unmanaged<τ_0_0>.Type) -> Unmanaged<τ_0_0>
|