Files
swift-mirror/test/SILGen/package_sil_linkage.swift
Erik Eckstein 7cceaff5f3 SIL: don't print operand types in textual SIL
Type annotations for instruction operands are omitted, e.g.

```
  %3 = struct $S(%1, %2)
```

Operand types are redundant anyway and were only used for sanity checking in the SIL parser.

But: operand types _are_ printed if the definition of the operand value was not printed yet.
This happens:

* if the block with the definition appears after the block where the operand's instruction is located

* if a block or instruction is printed in isolation, e.g. in a debugger

The old behavior can be restored with `-Xllvm -sil-print-types`.
This option is added to many existing test files which check for operand types in their check-lines.
2024-11-21 18:49:52 +01:00

729 lines
44 KiB
Swift

// RUN: %empty-directory(%t)
// RUN: split-file %s %t
/// Build Utils module resiliently.
// RUN: %target-swift-frontend -emit-module %t/Utils.swift \
// RUN: -module-name Utils -swift-version 5 -I %t \
// RUN: -package-name mypkg \
// RUN: -enable-library-evolution \
// RUN: -emit-module -emit-module-path %t/Utils.swiftmodule
// RUN: %target-swift-frontend -typecheck %t/Client.swift -I %t -swift-version 5 -package-name mypkg -verify
/// Check serialization in SILGEN with resilience enabled.
// RUN: %target-swift-emit-silgen -Xllvm -sil-print-types -emit-verbose-sil -sil-verify-all -enable-library-evolution -module-name Utils %t/Utils.swift -package-name mypkg -I %t > %t/Utils-Res.sil
// RUN: %FileCheck %s --check-prefixes=UTILS-RES,UTILS-COMMON -input-file=%t/Utils-Res.sil
/// Check for indirect access with a resiliently built module dependency.
// RUN: %target-swift-emit-silgen -Xllvm -sil-print-types -sil-verify-all %t/Client.swift -package-name mypkg -I %t > %t/Client-Res.sil
// RUN: %FileCheck %s --check-prefixes=CLIENT-RES,CLIENT-COMMON -input-file=%t/Client-Res.sil
// RUN: rm -rf %t/Utils.swiftmodule
/// Build Utils module non-resiliently
// RUN: %target-swift-frontend -emit-module %t/Utils.swift \
// RUN: -module-name Utils -swift-version 5 -I %t \
// RUN: -package-name mypkg \
// RUN: -emit-module -emit-module-path %t/Utils.swiftmodule
// RUN: %target-swift-frontend -typecheck %t/Client.swift -I %t -swift-version 5 -package-name mypkg -verify
/// Check serialization in SILGEN with resilience not enabled.
// RUN: %target-swift-emit-silgen -Xllvm -sil-print-types -emit-verbose-sil -sil-verify-all -module-name Utils %t/Utils.swift -package-name mypkg -I %t > %t/Utils-NonRes.sil
// RUN: %FileCheck %s --check-prefixes=UTILS-NONRES,UTILS-COMMON -input-file %t/Utils-NonRes.sil
/// Check for indirect access with a non-resiliently built module dependency.
// RUN: %target-swift-emit-silgen -Xllvm -sil-print-types -sil-verify-all %t/Client.swift -package-name mypkg -I %t > %t/Client-NonRes.sil
// RUN: %FileCheck %s --check-prefixes=CLIENT-NONRES,CLIENT-COMMON -input-file %t/Client-NonRes.sil
//--- Utils.swift
// UTILS-NONRES-NOT: sil shared [thunk] [ossa] @$s5Utils11PublicKlassC4dataSivpACTk : $@convention(keypath_accessor_setter) (@in_guaranteed Int, @in_guaranteed PublicKlass) -> () {
// UTILS-NONRES-NOT: sil shared [thunk] [ossa] @$s5Utils11PublicKlassC4dataSivpACTk : $@convention(keypath_accessor_setter) (@in_guaranteed Int, @in_guaranteed PublicKlass) -> () {
// UTILS-NONRES-NOT: sil shared [thunk] [ossa] @$s5Utils8PkgKlassC4dataSivpACTK : $@convention(keypath_accessor_getter) (@in_guaranteed PkgKlass) -> @out Int {
// UTILS-NONRES-NOT: sil shared [thunk] [ossa] @$s5Utils8PkgKlassC4dataSivpACTk : $@convention(keypath_accessor_setter) (@in_guaranteed Int, @in_guaranteed PkgKlass) -> () {
// UTILS-NONRES-NOT: sil shared [thunk] [ossa] @$s5Utils11UfiPkgClassC4dataSivpACTK : $@convention(keypath_accessor_getter) (@in_guaranteed UfiPkgClass) -> @out Int {
// UTILS-NONRES-NOT: sil shared [thunk] [ossa] @$s5Utils11UfiPkgClassC4dataSivpACTk : $@convention(keypath_accessor_setter) (@in_guaranteed Int, @in_guaranteed UfiPkgClass) -> () {
// UTILS-NONRES-NOT: sil shared [thunk] [ossa] @$s5Utils15PkgClassGenericC4dataxvplACyxGTK : $@convention(keypath_accessor_getter) <T> (@in_guaranteed PkgClassGeneric<T>) -> @out T {
// UTILS-NONRES-NOT: sil shared [thunk] [ossa] @$s5Utils15PkgClassGenericC4dataxvplACyxGTk : $@convention(keypath_accessor_setter) <T> (@in_guaranteed T, @in_guaranteed PkgClassGeneric<T>) -> () {
public protocol PublicProto {
var data: Int { get set }
func pfunc(_ arg: Int) -> Int
}
public class PublicKlass: PublicProto {
// key path getter/setter for PublicKlass are only emitted when resilient.
// key path getter for PublicKlass.data : PublicKlass
// UTILS-RES-DAG: sil shared [thunk] [ossa] @$s5Utils11PublicKlassC4dataSivpACTK : $@convention(keypath_accessor_getter) (@in_guaranteed PublicKlass) -> @out Int {
// key path setter for PublicKlass.data : PublicKlass
// UTILS-RES-DAG: sil shared [thunk] [ossa] @$s5Utils11PublicKlassC4dataSivpACTk : $@convention(keypath_accessor_setter) (@in_guaranteed Int, @in_guaranteed PublicKlass) -> () {
// PublicKlass.data.getter
// UTILS-RES-DAG: sil [ossa] @$s5Utils11PublicKlassC4dataSivg : $@convention(method) (@guaranteed PublicKlass) -> Int
// UTILS-NONRES-DAG: sil [transparent] [serialized] [ossa] @$s5Utils11PublicKlassC4dataSivg : $@convention(method) (@guaranteed PublicKlass) -> Int {
// PublicKlass.data.setter
// UTILS-RES-DAG: sil [ossa] @$s5Utils11PublicKlassC4dataSivs : $@convention(method) (Int, @guaranteed PublicKlass) -> () {
// UTILS-NONRES-DAG: sil [transparent] [serialized] [ossa] @$s5Utils11PublicKlassC4dataSivs : $@convention(method) (Int, @guaranteed PublicKlass) -> () {
// PublicKlass.data.modify
// UTILS-RES-DAG: sil [ossa] @$s5Utils11PublicKlassC4dataSivM : $@yield_once @convention(method) (@guaranteed PublicKlass) -> @yields @inout Int {
// UTILS-NONRES-DAG: sil [transparent] [serialized] [ossa] @$s5Utils11PublicKlassC4dataSivM : $@yield_once @convention(method) (@guaranteed PublicKlass) -> @yields @inout Int {
// protocol witness for PublicProto.data.getter in conformance PublicKlass
// UTILS-RES-DAG: sil private [transparent] [thunk] [ossa] @$s5Utils11PublicKlassCAA0B5ProtoA2aDP4dataSivgTW : $@convention(witness_method: PublicProto) (@in_guaranteed PublicKlass) -> Int {
// UTILS-NONRES-DAG: sil shared [transparent] [serialized] [thunk] [ossa] @$s5Utils11PublicKlassCAA0B5ProtoA2aDP4dataSivgTW : $@convention(witness_method: PublicProto) (@in_guaranteed PublicKlass) -> Int {
// protocol witness for PublicProto.data.setter in conformance PublicKlass
// UTILS-RES-DAG: sil private [transparent] [thunk] [ossa] @$s5Utils11PublicKlassCAA0B5ProtoA2aDP4dataSivsTW : $@convention(witness_method: PublicProto) (Int, @inout PublicKlass) -> () {
// UTILS-NONRES-DAG: sil shared [transparent] [serialized] [thunk] [ossa] @$s5Utils11PublicKlassCAA0B5ProtoA2aDP4dataSivsTW : $@convention(witness_method: PublicProto) (Int, @inout PublicKlass) -> () {
// protocol witness for PublicProto.data.modify in conformance PublicKlass
// UTILS-RES-DAG: sil private [transparent] [thunk] [ossa] @$s5Utils11PublicKlassCAA0B5ProtoA2aDP4dataSivMTW : $@yield_once @convention(witness_method: PublicProto) @substituted <τ_0_0> (@inout τ_0_0) -> @yields @inout Int for <PublicKlass> {
// UTILS-NONRES-DAG: sil shared [transparent] [serialized] [thunk] [ossa] @$s5Utils11PublicKlassCAA0B5ProtoA2aDP4dataSivMTW : $@yield_once @convention(witness_method: PublicProto) @substituted <τ_0_0> (@inout τ_0_0) -> @yields @inout Int for <PublicKlass> {
public var data: Int
// default argument 0 of PublicKlass.init(data:)
// UTILS-COMMON-DAG: sil non_abi [serialized] [ossa] @$s5Utils11PublicKlassC4dataACSi_tcfcfA_ : $@convention(thin) () -> Int {
// PublicKlass.__allocating_init(data:)
// UTILS-COMMON-DAG: sil [serialized] [exact_self_class] [ossa] @$s5Utils11PublicKlassC4dataACSi_tcfC : $@convention(method) (Int, @thick PublicKlass.Type) -> @owned PublicKlass {
public init(data: Int = 1) {
self.data = data
}
// protocol witness for PublicProto.pfunc(_:) in conformance PublicKlass
// UTILS-RES-DAG: sil private [transparent] [thunk] [ossa] @$s5Utils11PublicKlassCAA0B5ProtoA2aDP5pfuncyS2iFTW : $@convention(witness_method: PublicProto) (Int, @in_guaranteed PublicKlass) -> Int {
// UTILS-NONRES-DAG: sil shared [transparent] [serialized] [thunk] [ossa] @$s5Utils11PublicKlassCAA0B5ProtoA2aDP5pfuncyS2iFTW : $@convention(witness_method: PublicProto) (Int, @in_guaranteed PublicKlass) -> Int {
public func pfunc(_ arg: Int) -> Int {
return data + arg
}
}
package protocol PkgProto {
var data: Int { get set }
func pkgfunc(_ arg: Int) -> Int
}
package class PkgKlass: PkgProto {
// Similar to PublicKlass, key path getter/setter for PkgKlass are only emitted
// when resilient.
// key path getter for PkgKlass.data : PkgKlass
// UTILS-RES-DAG: sil shared [thunk] [ossa] @$s5Utils8PkgKlassC4dataSivpACTK : $@convention(keypath_accessor_getter) (@in_guaranteed PkgKlass) -> @out Int {
// key path setter for PkgKlass.data : PkgKlass
// UTILS-RES-DAG: sil shared [thunk] [ossa] @$s5Utils8PkgKlassC4dataSivpACTk : $@convention(keypath_accessor_setter) (@in_guaranteed Int, @in_guaranteed PkgKlass) -> () {
// protocol witness for PkgProto.data.getter in conformance PkgKlass
// UTILS-COMMON-DAG: sil private [transparent] [thunk] [ossa] @$s5Utils8PkgKlassCAA0B5ProtoA2aDP4dataSivgTW : $@convention(witness_method: PkgProto) (@in_guaranteed PkgKlass) -> Int {
// protocol witness for PkgProto.data.setter in conformance PkgKlass
// UTILS-COMMON-DAG: sil private [transparent] [thunk] [ossa] @$s5Utils8PkgKlassCAA0B5ProtoA2aDP4dataSivsTW : $@convention(witness_method: PkgProto) (Int, @inout PkgKlass) -> () {
// PkgKlass.data.getter
// UTILS-RES-DAG: sil package [ossa] @$s5Utils8PkgKlassC4dataSivg : $@convention(method) (@guaranteed PkgKlass) -> Int {
// UTILS-NONRES-DAG: sil package [transparent] [ossa] @$s5Utils8PkgKlassC4dataSivg : $@convention(method) (@guaranteed PkgKlass) -> Int {
// PkgKlass.data.setter
// UTILS-RES-DAG: sil package [ossa] @$s5Utils8PkgKlassC4dataSivs : $@convention(method) (Int, @guaranteed PkgKlass) -> () {
// UTILS-NONRES-DAG: sil package [transparent] [ossa] @$s5Utils8PkgKlassC4dataSivs : $@convention(method) (Int, @guaranteed PkgKlass) -> () {
// PkgKlass.data.modify
// UTILS-RES-DAG: sil package [ossa] @$s5Utils8PkgKlassC4dataSivM : $@yield_once @convention(method) (@guaranteed PkgKlass) -> @yields @inout Int {
// UTILS-NONRES-DAG: sil package [transparent] [ossa] @$s5Utils8PkgKlassC4dataSivM : $@yield_once @convention(method) (@guaranteed PkgKlass) -> @yields @inout Int {
// protocol witness for PkgProto.pkgfunc(_:) in conformance PkgKlass
// UTILS-COMMON-DAG: sil private [transparent] [thunk] [ossa] @$s5Utils8PkgKlassCAA0B5ProtoA2aDP7pkgfuncyS2iFTW : $@convention(witness_method: PkgProto) (Int, @in_guaranteed PkgKlass) -> Int {
package var data: Int
// default argument 0 of PkgKlass.init(data:)
// UTILS-COMMON-DAG: sil package [ossa] @$s5Utils8PkgKlassC4dataACSi_tcfcfA_ : $@convention(thin) () -> Int {
// PkgKlass.__allocating_init(data:)
// UTILS-COMMON-DAG: sil package [exact_self_class] [ossa] @$s5Utils8PkgKlassC4dataACSi_tcfC : $@convention(method) (Int, @thick PkgKlass.Type) -> @owned PkgKlass {
// PkgKlass.init(data:)
// UTILS-COMMON-DAG: sil package [ossa] @$s5Utils8PkgKlassC4dataACSi_tcfc : $@convention(method) (Int, @owned PkgKlass) -> @owned PkgKlass {
// PkgKlass.deinit
// UTILS-COMMON-DAG: sil package [ossa] @$s5Utils8PkgKlassCfd : $@convention(method) (@guaranteed PkgKlass) -> @owned Builtin.NativeObject {
// PkgKlass.__deallocating_deinit
// UTILS-COMMON-DAG: sil package [ossa] @$s5Utils8PkgKlassCfD : $@convention(method) (@owned PkgKlass) -> () {
package init(data: Int = 1) {
self.data = data
}
// PkgKlass.pkgfunc(_:)
// UTILS-COMMON-DAG: sil package [ossa] @$s5Utils8PkgKlassC7pkgfuncyS2iF : $@convention(method) (Int, @guaranteed PkgKlass) -> Int {
package func pkgfunc(_ arg: Int) -> Int {
return data + arg
}
}
class InternalClass {
// InternalClass.data.getter
// UTILS-COMMON-DAG: sil hidden [transparent] [ossa] @$s5Utils13InternalClassC4dataSivg : $@convention(method) (@guaranteed InternalClass) -> Int {
// InternalClass.data.setter
// UTILS-COMMON-DAG: sil hidden [transparent] [ossa] @$s5Utils13InternalClassC4dataSivs : $@convention(method) (Int, @guaranteed InternalClass) -> () {
// InternalClass.data.modify
// UTILS-COMMON-DAG: sil hidden [transparent] [ossa] @$s5Utils13InternalClassC4dataSivM : $@yield_once @convention(method) (@guaranteed InternalClass) -> @yields @inout Int {
var data: Int
// default argument 0 of InternalClass.init(data:)
// UTILS-COMMON-DAG: sil hidden [ossa] @$s5Utils13InternalClassC4dataACSi_tcfcfA_ : $@convention(thin) () -> Int {
// InternalClass.__allocating_init(data:)
// UTILS-COMMON-DAG: sil hidden [exact_self_class] [ossa] @$s5Utils13InternalClassC4dataACSi_tcfC : $@convention(method) (Int, @thick InternalClass.Type) -> @owned InternalClass {
// InternalClass.init(data:)
// UTILS-COMMON-DAG: sil hidden [ossa] @$s5Utils13InternalClassC4dataACSi_tcfc : $@convention(method) (Int, @owned InternalClass) -> @owned InternalClass {
// InternalClass.deinit
// UTILS-COMMON-DAG: sil hidden [ossa] @$s5Utils13InternalClassCfd : $@convention(method) (@guaranteed InternalClass) -> @owned Builtin.NativeObject {
// InternalClass.__deallocating_deinit
// UTILS-COMMON-DAG: sil hidden [ossa] @$s5Utils13InternalClassCfD : $@convention(method) (@owned InternalClass) -> () {
init(data: Int = 1) {
self.data = data
}
// InternalClass.internalfunc(_:)
// UTILS-COMMON-DAG: sil hidden [ossa] @$s5Utils13InternalClassC12internalfuncyS2iF : $@convention(method) (Int, @guaranteed InternalClass) -> Int {
func internalfunc(_ arg: Int) -> Int {
return data + arg
}
}
@usableFromInline
package class UfiPkgClass {
// variable initialization expression of UfiPkgClass.data
// UTILS-RES-DAG: sil hidden [transparent] [ossa] @$s5Utils11UfiPkgClassC4dataSivpfi : $@convention(thin) () -> Int {
// UTILS-NONRES-DAG: sil [transparent] [ossa] @$s5Utils11UfiPkgClassC4dataSivpfi : $@convention(thin) () -> Int {
// Similar to PublicKlass and PkgKlass, key path get/setter are emitted only when resilient.
// key path getter for UfiPkgClass.data : UfiPkgClass
// UTILS-RES-DAG: sil shared [thunk] [ossa] @$s5Utils11UfiPkgClassC4dataSivpACTK : $@convention(keypath_accessor_getter) (@in_guaranteed UfiPkgClass) -> @out Int {
// key path setter for UfiPkgClass.data : UfiPkgClass
// UTILS-RES-DAG: sil shared [thunk] [ossa] @$s5Utils11UfiPkgClassC4dataSivpACTk : $@convention(keypath_accessor_setter) (@in_guaranteed Int, @in_guaranteed UfiPkgClass) -> () {
// UfiPkgClass.data.getter
// UTILS-RES-DAG: sil package [ossa] @$s5Utils11UfiPkgClassC4dataSivg : $@convention(method) (@guaranteed UfiPkgClass) -> Int {
// UTILS-NONRES-DAG: sil package [transparent] [ossa] @$s5Utils11UfiPkgClassC4dataSivg : $@convention(method) (@guaranteed UfiPkgClass) -> Int {
// UfiPkgClass.data.setter
// UTILS-RES-DAG: sil package [ossa] @$s5Utils11UfiPkgClassC4dataSivs : $@convention(method) (Int, @guaranteed UfiPkgClass) -> () {
// UTILS-NONRES-DAG: sil package [transparent] [ossa] @$s5Utils11UfiPkgClassC4dataSivs : $@convention(method) (Int, @guaranteed UfiPkgClass) -> () {
// UfiPkgClass.data.modify
// UTILS-RES-DAG: sil package [ossa] @$s5Utils11UfiPkgClassC4dataSivM : $@yield_once @convention(method) (@guaranteed UfiPkgClass) -> @yields @inout Int {
// UTILS-NONRES-DAG: sil package [transparent] [ossa] @$s5Utils11UfiPkgClassC4dataSivM : $@yield_once @convention(method) (@guaranteed UfiPkgClass) -> @yields @inout Int {
package var data: Int = 0
// UfiPkgClass.__allocating_init()
// UTILS-COMMON-DAG: sil package [exact_self_class] [ossa] @$s5Utils11UfiPkgClassCACycfC : $@convention(method) (@thick UfiPkgClass.Type) -> @owned UfiPkgClass {
// UfiPkgClass.init()
// UTILS-COMMON-DAG: sil package [ossa] @$s5Utils11UfiPkgClassCACycfc : $@convention(method) (@owned UfiPkgClass) -> @owned UfiPkgClass {
// UfiPkgClass.deinit
// UTILS-COMMON-DAG: sil [ossa] @$s5Utils11UfiPkgClassCfd : $@convention(method) (@guaranteed UfiPkgClass) -> @owned Builtin.NativeObject {
// UfiPkgClass.__deallocating_deinit
// UTILS-COMMON-DAG: sil [ossa] @$s5Utils11UfiPkgClassCfD : $@convention(method) (@owned UfiPkgClass) -> () {
package init() {}
}
@usableFromInline
class UfiInternalClass {
// variable initialization expression of UfiInternalClass.data
// UTILS-RES-DAG: sil hidden [transparent] [ossa] @$s5Utils16UfiInternalClassC4dataSivpfi : $@convention(thin) () ->
// UTILS-NONRES-DAG: sil [transparent] [ossa] @$s5Utils16UfiInternalClassC4dataSivpfi : $@convention(thin) () ->
// UfiInternalClass.data.getter
// UTILS-RES-DAG: sil hidden [ossa] @$s5Utils16UfiInternalClassC4dataSivg : $@convention(method) (@guaranteed UfiInternalClass) -> Int {
// UTILS-NONRES-DAG: sil hidden [transparent] [ossa] @$s5Utils16UfiInternalClassC4dataSivg : $@convention(method) (@guaranteed UfiInternalClass) -> Int {
// UfiInternalClass.data.setter
// UTILS-RES-DAG: sil hidden [ossa] @$s5Utils16UfiInternalClassC4dataSivs : $@convention(method) (Int, @guaranteed UfiInternalClass) -> () {
// UTILS-NONRES-DAG: sil hidden [transparent] [ossa] @$s5Utils16UfiInternalClassC4dataSivs : $@convention(method) (Int, @guaranteed UfiInternalClass) -> () {
// UfiInternalClass.data.modify
// UTILS-RES-DAG: sil hidden [ossa] @$s5Utils16UfiInternalClassC4dataSivM : $@yield_once @convention(method) (@guaranteed UfiInternalClass) -> @yields @inout Int {
// UTILS-NONRES-DAG: sil hidden [transparent] [ossa] @$s5Utils16UfiInternalClassC4dataSivM : $@yield_once @convention(method) (@guaranteed UfiInternalClass) -> @yields @inout Int {
var data: Int = 0
// UfiInternalClass.deinit
// UTILS-COMMON-DAG: sil [ossa] @$s5Utils16UfiInternalClassCfd : $@convention(method) (@guaranteed UfiInternalClass) ->
// UfiInternalClass.__deallocating_deinit
// UTILS-COMMON-DAG: sil [ossa] @$s5Utils16UfiInternalClassCfD : $@convention(method) (@owned UfiInternalClass) -> () {
// UfiInternalClass.__allocating_init()
// UTILS-COMMON-DAG: sil hidden [exact_self_class] [ossa] @$s5Utils16UfiInternalClassCACycfC : $@convention(method) (@thick UfiInternalClass.Type) -> @owned UfiInternalClass {
// UfiInternalClass.init()
// UTILS-COMMON-DAG: sil hidden [ossa] @$s5Utils16UfiInternalClassCACycfc : $@convention(method) (@owned UfiInternalClass) -> @owned UfiInternalClass {
init() {}
}
public struct PublicStruct {
// variable initialization expression of PublicStruct.data
// UTILS-RES-DAG: sil hidden [transparent] [ossa] @$s5Utils12PublicStructV4dataSivpfi : $@convention(thin) () -> Int {
// UTILS-NONRES-DAG: sil [transparent] [ossa] @$s5Utils12PublicStructV4dataSivpfi : $@convention(thin) () -> Int {
// PublicStruct.data.getter
// UTILS-RES-DAG: sil [ossa] @$s5Utils12PublicStructV4dataSivg : $@convention(method) (@in_guaranteed PublicStruct) -> Int {
// UTILS-NONRES-DAG: sil [transparent] [serialized] [ossa] @$s5Utils12PublicStructV4dataSivg : $@convention(method) (PublicStruct) -> Int {
// PublicStruct.data.setter
// UTILS-RES-DAG: sil [ossa] @$s5Utils12PublicStructV4dataSivs : $@convention(method) (Int, @inout PublicStruct) -> () {
// UTILS-NONRES-DAG: sil [transparent] [serialized] [ossa] @$s5Utils12PublicStructV4dataSivs : $@convention(method) (Int, @inout PublicStruct) -> () {
// PublicStruct.data.modify
// UTILS-RES-DAG: sil [ossa] @$s5Utils12PublicStructV4dataSivM : $@yield_once @convention(method) (@inout PublicStruct) -> @yields @inout Int {
// UTILS-NONRES-DAG: sil [transparent] [serialized] [ossa] @$s5Utils12PublicStructV4dataSivM : $@yield_once @convention(method) (@inout PublicStruct) -> @yields @inout Int {
public var data: Int = 0
// PublicStruct.init()
// UTILS-RES-DAG: sil [ossa] @$s5Utils12PublicStructVACycfC : $@convention(method) (@thin PublicStruct.Type) -> @out PublicStruct {
// UTILS-NONRES-DAG: sil [ossa] @$s5Utils12PublicStructVACycfC : $@convention(method) (@thin PublicStruct.Type) -> PublicStruct {
public init() {}
}
@_frozen
public struct FrozenPublicStruct {
// variable initialization expression of FrozenPublicStruct.data
// UTILS-COMMON-DAG: sil non_abi [transparent] [serialized] [ossa] @$s5Utils18FrozenPublicStructV4dataSivpfi : $@convention(thin) () -> Int {
// FrozenPublicStruct.data.getter
// UTILS-COMMON-DAG: sil [transparent] [serialized] [ossa] @$s5Utils18FrozenPublicStructV4dataSivg : $@convention(method) (FrozenPublicStruct) -> Int {
// FrozenPublicStruct.data.setter
// UTILS-COMMON-DAG: sil [transparent] [serialized] [ossa] @$s5Utils18FrozenPublicStructV4dataSivs : $@convention(method) (Int, @inout FrozenPublicStruct) -> () {
// FrozenPublicStruct.data.modify
// UTILS-COMMON-DAG: sil [transparent] [serialized] [ossa] @$s5Utils18FrozenPublicStructV4dataSivM : $@yield_once @convention(method) (@inout FrozenPublicStruct) -> @yields @inout Int {
public var data: Int = 0
// FrozenPublicStruct.init()
// UTILS-COMMON-DAG: sil [ossa] @$s5Utils18FrozenPublicStructVACycfC : $@convention(method) (@thin FrozenPublicStruct.Type) -> FrozenPublicStruct {
public init() {}
}
package struct PkgStruct {
// variable initialization expression of PkgStruct.data
// UTILS-RES-DAG: sil hidden [transparent] [ossa] @$s5Utils9PkgStructV4dataSivpfi : $@convention(thin) () -> Int {
// UTILS-NONRES-DAG: sil package [transparent] [ossa] @$s5Utils9PkgStructV4dataSivpfi : $@convention(thin) () -> Int {
package var data: Int = 0
// PkgStruct.init()
// UTILS-RES-DAG: sil package [ossa] @$s5Utils9PkgStructVACycfC : $@convention(method) (@thin PkgStruct.Type) -> @out PkgStruct {
// UTILS-NONRES-DAG: sil package [ossa] @$s5Utils9PkgStructVACycfC : $@convention(method) (@thin PkgStruct.Type) -> PkgStruct {
package init() {}
}
struct InternalStruct {
// variable initialization expression of InternalStruct.data
// UTILS-COMMON-DAG: sil hidden [transparent] [ossa] @$s5Utils14InternalStructV4dataSivpfi : $@convention(thin) () -> Int {
var data: Int = 0
// InternalStruct.init()
// UTILS-COMMON-DAG: sil hidden [ossa] @$s5Utils14InternalStructVACycfC : $@convention(method) (@thin InternalStruct.Type) -> InternalStruct {
init() {}
}
@usableFromInline
package struct UfiPkgStruct {
// variable initialization expression of UfiPkgStruct.data
// UTILS-RES-DAG: sil hidden [transparent] [ossa] @$s5Utils12UfiPkgStructV4dataSivpfi : $@convention(thin) () -> Int {
// UTILS-NONRES-DAG: sil [transparent] [ossa] @$s5Utils12UfiPkgStructV4dataSivpfi : $@convention(thin) () -> Int {
package var data: Int = 0
// UfiPkgStruct.init()
// UTILS-RES-DAG: sil package [ossa] @$s5Utils12UfiPkgStructVACycfC : $@convention(method) (@thin UfiPkgStruct.Type) -> @out UfiPkgStruct {
// UTILS-NONRES-DAG: sil package [ossa] @$s5Utils12UfiPkgStructVACycfC : $@convention(method) (@thin UfiPkgStruct.Type) -> UfiPkgStruct {
package init() {}
}
@usableFromInline
struct UfiInternalStruct {
// variable initialization expression of UfiInternalStruct.data
// UTILS-RES-DAG: sil hidden [transparent] [ossa] @$s5Utils17UfiInternalStructV4dataSivpfi : $@convention(thin) () -> Int {
// UTILS-NONRES-DAG: sil [transparent] [ossa] @$s5Utils17UfiInternalStructV4dataSivpfi : $@convention(thin) () -> Int {
var data: Int = 0
// UfiInternalStruct.init()
// UTILS-RES-DAG: sil hidden [ossa] @$s5Utils17UfiInternalStructVACycfC : $@convention(method) (@thin UfiInternalStruct.Type) -> @out UfiInternalStruct {
// UTILS-NONRES-DAG: sil hidden [ossa] @$s5Utils17UfiInternalStructVACycfC : $@convention(method) (@thin UfiInternalStruct.Type) -> UfiInternalStruct {
init() {}
}
package struct PkgStructGeneric<T> {
package var data: T
package init(_ arg: T) { data = arg }
// PkgStructGeneric.init(_:)
// UTILS-COMMON-DAG: sil package [ossa] @$s5Utils16PkgStructGenericVyACyxGxcfC : $@convention(method) <T> (@in T, @thin PkgStructGeneric<T>.Type) -> @out PkgStructGeneric<T> {
}
package class PkgClassGeneric<T> {
package var data: T
package init(_ arg: T) { data = arg }
// key path getter for PkgClassGeneric.data : <A>PkgClassGeneric<A>
// UTILS-RES-DAG: sil shared [thunk] [ossa] @$s5Utils15PkgClassGenericC4dataxvplACyxGTK : $@convention(keypath_accessor_getter) <T> (@in_guaranteed PkgClassGeneric<T>) -> @out T {
// key path setter for PkgClassGeneric.data : <A>PkgClassGeneric<A>
// UTILS-RES-DAG: sil shared [thunk] [ossa] @$s5Utils15PkgClassGenericC4dataxvplACyxGTk : $@convention(keypath_accessor_setter) <T> (@in_guaranteed T, @in_guaranteed PkgClassGeneric<T>) -> () {
// PkgClassGeneric.data.getter
// UTILS-RES-DAG: sil package [ossa] @$s5Utils15PkgClassGenericC4dataxvg : $@convention(method) <T> (@guaranteed PkgClassGeneric<T>) -> @out T {
// UTILS-NONRES-DAG: sil package [transparent] [ossa] @$s5Utils15PkgClassGenericC4dataxvg : $@convention(method) <T> (@guaranteed PkgClassGeneric<T>) -> @out T {
// PkgClassGeneric.data.setter
// UTILS-RES-DAG: sil package [ossa] @$s5Utils15PkgClassGenericC4dataxvs : $@convention(method) <T> (@in T, @guaranteed PkgClassGeneric<T>) -> () {
// UTILS-NONRES-DAG: sil package [transparent] [ossa] @$s5Utils15PkgClassGenericC4dataxvs : $@convention(method) <T> (@in T, @guaranteed PkgClassGeneric<T>) -> () {
// PkgClassGeneric.data.modify
// UTILS-RES-DAG: sil package [ossa] @$s5Utils15PkgClassGenericC4dataxvM : $@yield_once @convention(method) <T> (@guaranteed PkgClassGeneric<T>) -> @yields @inout T {
// UTILS-NONRES-DAG: sil package [transparent] [ossa] @$s5Utils15PkgClassGenericC4dataxvM : $@yield_once @convention(method) <T> (@guaranteed PkgClassGeneric<T>) -> @yields @inout T {
// PkgClassGeneric.__allocating_init(_:)
// UTILS-COMMON-DAG: sil package [exact_self_class] [ossa] @$s5Utils15PkgClassGenericCyACyxGxcfC : $@convention(method) <T> (@in T, @thick PkgClassGeneric<T>.Type) -> @owned PkgClassGeneric<T> {
// PkgClassGeneric.init(_:)
// UTILS-COMMON-DAG: sil package [ossa] @$s5Utils15PkgClassGenericCyACyxGxcfc : $@convention(method) <T> (@in T, @owned PkgClassGeneric<T>) -> @owned PkgClassGeneric<T> {
// PkgClassGeneric.deinit
// UTILS-COMMON-DAG: sil package [ossa] @$s5Utils15PkgClassGenericCfd : $@convention(method) <T> (@guaranteed PkgClassGeneric<T>) -> @owned Builtin.NativeObject {
// PkgClassGeneric.__deallocating_deinit
// UTILS-COMMON-DAG: sil package [ossa] @$s5Utils15PkgClassGenericCfD : $@convention(method) <T> (@owned PkgClassGeneric<T>) -> () {
}
package struct PkgStructWithPublicMember {
package var member: PublicStruct
}
public struct PublicStructWithPublicExistential {
// PublicStructWithPublicExistential.member.getter
// UTILS-RES-DAG: sil [ossa] @$s5Utils016PublicStructWithB11ExistentialV6memberAA0B5Proto_pvg : $@convention(method) (@in_guaranteed PublicStructWithPublicExistential) -> @out any PublicProto {
// UTILS-NONRES-DAG: sil [transparent] [serialized] [ossa] @$s5Utils016PublicStructWithB11ExistentialV6memberAA0B5Proto_pvg : $@convention(method) (@in_guaranteed PublicStructWithPublicExistential) -> @out any PublicProto {
// PublicStructWithPublicExistential.member.setter
// UTILS-RES-DAG: sil [ossa] @$s5Utils016PublicStructWithB11ExistentialV6memberAA0B5Proto_pvs : $@convention(method) (@in any PublicProto, @inout PublicStructWithPublicExistential) -> () {
// UTILS-NONRES-DAG: sil [transparent] [serialized] [ossa] @$s5Utils016PublicStructWithB11ExistentialV6memberAA0B5Proto_pvs : $@convention(method) (@in any PublicProto, @inout PublicStructWithPublicExistential) -> () {
// PublicStructWithPublicExistential.member.modify
// UTILS-RES-DAG: sil [ossa] @$s5Utils016PublicStructWithB11ExistentialV6memberAA0B5Proto_pvM : $@yield_once @convention(method) (@inout PublicStructWithPublicExistential) -> @yields @inout any PublicProto {
// UTILS-NONRES-DAG: sil [transparent] [serialized] [ossa] @$s5Utils016PublicStructWithB11ExistentialV6memberAA0B5Proto_pvM : $@yield_once @convention(method) (@inout PublicStructWithPublicExistential) -> @yields @inout any PublicProto {
public var member: any PublicProto
// PublicStructWithPublicExistential.init(_:)
// UTILS-COMMON-DAG: sil [ossa] @$s5Utils016PublicStructWithB11ExistentialVyAcA0B5Proto_pcfC : $@convention(method) (@in any PublicProto, @thin PublicStructWithPublicExistential.Type) -> @out PublicStructWithPublicExistential {
public init(_ arg: any PublicProto) { member = arg }
}
package struct PkgStructWithPublicExistential {
// PkgStructWithPublicExistential.member.getter
// UTILS-RES-DAG: sil package [ossa] @$s5Utils30PkgStructWithPublicExistentialV6memberAA0E5Proto_pvg : $@convention(method) (@in_guaranteed PkgStructWithPublicExistential) -> @out any PublicProto {
// UTILS-NONRES-DAG: sil package [transparent] [ossa] @$s5Utils30PkgStructWithPublicExistentialV6memberAA0E5Proto_pvg : $@convention(method) (@in_guaranteed PkgStructWithPublicExistential) -> @out any PublicProto {
// PkgStructWithPublicExistential.member.setter
// UTILS-RES-DAG: sil package [ossa] @$s5Utils30PkgStructWithPublicExistentialV6memberAA0E5Proto_pvs : $@convention(method) (@in any PublicProto, @inout PkgStructWithPublicExistential) -> () {
// UTILS-NONRES-DAG: sil package [transparent] [ossa] @$s5Utils30PkgStructWithPublicExistentialV6memberAA0E5Proto_pvs : $@convention(method) (@in any PublicProto, @inout PkgStructWithPublicExistential) -> () {
// PkgStructWithPublicExistential.member.modify
// UTILS-RES-DAG: sil package [ossa] @$s5Utils30PkgStructWithPublicExistentialV6memberAA0E5Proto_pvM : $@yield_once @convention(method) (@inout PkgStructWithPublicExistential) -> @yields @inout any PublicProto {
// UTILS-NONRES-DAG: sil package [transparent] [ossa] @$s5Utils30PkgStructWithPublicExistentialV6memberAA0E5Proto_pvM : $@yield_once @convention(method) (@inout PkgStructWithPublicExistential) -> @yields @inout any PublicProto {
package var member: any PublicProto
// PkgStructWithPublicExistential.init(_:)
// UTILS-COMMON-DAG: sil package [ossa] @$s5Utils30PkgStructWithPublicExistentialVyAcA0E5Proto_pcfC : $@convention(method) (@in any PublicProto, @thin PkgStructWithPublicExistential.Type) -> @out PkgStructWithPublicExistential {
package init(_ arg: any PublicProto) { member = arg }
}
package struct PkgStructWithPkgExistential {
// PkgStructWithPkgExistential.member.getter
// UTILS-RES-DAG: sil package [ossa] @$s5Utils013PkgStructWithB11ExistentialV6memberAA0B5Proto_pvg : $@convention(method) (@in_guaranteed PkgStructWithPkgExistential) -> @out any PkgProto {
// UTILS-NONRES-DAG: sil package [transparent] [ossa] @$s5Utils013PkgStructWithB11ExistentialV6memberAA0B5Proto_pvg : $@convention(method) (@in_guaranteed PkgStructWithPkgExistential) -> @out any PkgProto {
// PkgStructWithPkgExistential.member.setter
// UTILS-RES-DAG: sil package [ossa] @$s5Utils013PkgStructWithB11ExistentialV6memberAA0B5Proto_pvs : $@convention(method) (@in any PkgProto, @inout PkgStructWithPkgExistential) -> () {
// UTILS-NONRES-DAG: sil package [transparent] [ossa] @$s5Utils013PkgStructWithB11ExistentialV6memberAA0B5Proto_pvs : $@convention(method) (@in any PkgProto, @inout PkgStructWithPkgExistential) -> () {
// PkgStructWithPkgExistential.member.modify
// UTILS-RES-DAG: sil package [ossa] @$s5Utils013PkgStructWithB11ExistentialV6memberAA0B5Proto_pvM : $@yield_once @convention(method) (@inout PkgStructWithPkgExistential) -> @yields @inout any PkgProto {
// UTILS-NONRES-DAG: sil package [transparent] [ossa] @$s5Utils013PkgStructWithB11ExistentialV6memberAA0B5Proto_pvM : $@yield_once @convention(method) (@inout PkgStructWithPkgExistential) -> @yields @inout any PkgProto {
package var member: any PkgProto
// PkgStructWithPkgExistential.init(_:)
// UTILS-COMMON-DAG: sil package [ossa] @$s5Utils013PkgStructWithB11ExistentialVyAcA0B5Proto_pcfC : $@convention(method) (@in any PkgProto, @thin PkgStructWithPkgExistential.Type) -> @out PkgStructWithPkgExistential {
package init(_ arg: any PkgProto) { member = arg }
}
// UTILS-RES-DAG: sil_vtable PublicKlass {
// UTILS-NONRES-DAG: sil_vtable [serialized] PublicKlass {
// FIXME: rdar://121976014 need to serialize package if non-resiliently built
// UTILS-COMMON-DAG: sil_vtable PkgKlass {
// UTILS-COMMON-DAG: sil_vtable PkgClassGeneric {
// UTILS-COMMON-DAG: sil_vtable InternalClass {
// UTILS-RES-DAG: sil_vtable UfiPkgClass {
// UTILS-NONRES-DAG: sil_vtable [serialized] UfiPkgClass {
// UTILS-RES-DAG: sil_vtable UfiInternalClass {
// UTILS-NONRES-DAG: sil_vtable [serialized] UfiInternalClass {
// UTILS-RES-DAG: sil_witness_table PublicKlass: PublicProto module Utils {
// UTILS-NONRES-DAG: sil_witness_table [serialized] PublicKlass: PublicProto module Utils {
// NOTE: package added below
// FIXME: rdar://121976014 serialize package when non-resilient
// UTILS-COMMON-DAG: sil_witness_table package PkgKlass: PkgProto module Utils {
// default witness table is emitted only when resiliently built
// UTILS-RES-DAG: sil_default_witness_table PublicProto {
// NOTE: package added below
// UTILS-RES-DAG: sil_default_witness_table package PkgProto {
// UTILS-RES-DAG: sil_property #PublicKlass.data (settable_property $Int, id #PublicKlass.data!getter : (PublicKlass) -> () -> Int, getter @$s5Utils11PublicKlassC4dataSivpACTK : $@convention(keypath_accessor_getter) (@in_guaranteed PublicKlass) -> @out Int, setter @$s5Utils11PublicKlassC4dataSivpACTk : $@convention(keypath_accessor_setter) (@in_guaranteed Int, @in_guaranteed PublicKlass) -> ())
// UTILS-NONRES-DAG: sil_property #PublicKlass.data ()
// UTILS-RES-DAG: sil_property #UfiPkgClass.data (settable_property $Int, id #UfiPkgClass.data!getter : (UfiPkgClass) -> () -> Int, getter @$s5Utils11UfiPkgClassC4dataSivpACTK : $@convention(keypath_accessor_getter) (@in_guaranteed UfiPkgClass) -> @out Int, setter @$s5Utils11UfiPkgClassC4dataSivpACTk : $@convention(keypath_accessor_setter) (@in_guaranteed Int, @in_guaranteed UfiPkgClass) -> ())
// UTILS-NONRES-DAG: sil_property #UfiPkgClass.data ()
// UTILS-RES-DAG: sil_property #PkgKlass.data (settable_property $Int, id #PkgKlass.data!getter : (PkgKlass) -> () -> Int, getter @$s5Utils8PkgKlassC4dataSivpACTK : $@convention(keypath_accessor_getter) (@in_guaranteed PkgKlass) -> @out Int, setter @$s5Utils8PkgKlassC4dataSivpACTk : $@convention(keypath_accessor_setter) (@in_guaranteed Int, @in_guaranteed PkgKlass) -> ())
// UTILS-NONRES-DAG: sil_property #PkgKlass.data ()
// UTILS-RES-DAG: sil_property #PkgClassGeneric.data<τ_0_0> (settable_property $τ_0_0, id #PkgClassGeneric.data!getter : <T> (PkgClassGeneric<T>) -> () -> T, getter @$s5Utils15PkgClassGenericC4dataxvplACyxGTK : $@convention(keypath_accessor_getter) <τ_0_0> (@in_guaranteed PkgClassGeneric<τ_0_0>) -> @out τ_0_0, setter @$s5Utils15PkgClassGenericC4dataxvplACyxGTk : $@convention(keypath_accessor_setter) <τ_0_0> (@in_guaranteed τ_0_0, @in_guaranteed PkgClassGeneric<τ_0_0>) -> ())
// UTILS-NONRES-DAG: sil_property #PkgClassGeneric.data<τ_0_0> ()
// UTILS-RES-DAG: sil_property #PublicStruct.data (stored_property #PublicStruct.data : $Int)
// UTILS-NONRES-DAG: sil_property #PublicStruct.data ()
// UTILS-RES-DAG: sil_property #FrozenPublicStruct.data (stored_property #FrozenPublicStruct.data : $Int)
// UTILS-NONRES-DAG: sil_property #FrozenPublicStruct.data ()
// UTILS-RES-DAG: sil_property #PkgStruct.data (stored_property #PkgStruct.data : $Int)
// UTILS-NONRES-DAG: sil_property #PkgStruct.data ()
// UTILS-RES-DAG: sil_property #UfiPkgStruct.data (stored_property #UfiPkgStruct.data : $Int)
// UTILS-NONRES-DAG: sil_property #UfiPkgStruct.data ()
// UTILS-RES-DAG: sil_property #PkgStructGeneric.data<τ_0_0> (stored_property #PkgStructGeneric.data : $τ_0_0)
// UTILS-NONRES-DAG: sil_property #PkgStructGeneric.data<τ_0_0> ()
// UTILS-RES-DAG: sil_property #PkgStructWithPublicMember.member (stored_property #PkgStructWithPublicMember.member : $PublicStruct)
// UTILS-NONRES-DAG: sil_property #PkgStructWithPublicMember.member ()
// UTILS-RES-DAG: sil_property #PublicStructWithPublicExistential.member (stored_property #PublicStructWithPublicExistential.member : $any PublicProto)
// UTILS-NONRES-DAG: sil_property #PublicStructWithPublicExistential.member ()
// UTILS-RES-DAG: sil_property #PkgStructWithPublicExistential.member (stored_property #PkgStructWithPublicExistential.member : $any PublicProto)
// UTILS-NONRES-DAG: sil_property #PkgStructWithPublicExistential.member ()
// UTILS-RES-DAG: sil_property #PkgStructWithPkgExistential.member (stored_property #PkgStructWithPkgExistential.member : $any PkgProto)
// UTILS-NONRES-DAG: sil_property #PkgStructWithPkgExistential.member ()
//--- Client.swift
import Utils
package func f(_ arg: PublicStruct) -> Int {
return arg.data
}
// CLIENT-RES-LABEL: // f(_:)
// CLIENT-RES-NEXT: // Isolation: unspecified
// CLIENT-RES-NEXT: sil package [ossa] @$s6Client1fySi5Utils12PublicStructVF : $@convention(thin) (@in_guaranteed PublicStruct) -> Int
// CLIENT-RES-LABEL: // PublicStruct.data.getter
// CLIENT-RES-NEXT: // Isolation: unspecified
// CLIENT-RES-NEXT: sil @$s5Utils12PublicStructV4dataSivg : $@convention(method) (@in_guaranteed PublicStruct) -> Int
// CLIENT-NONRES-LABEL: // f(_:)
// CLIENT-NONRES-NEXT: // Isolation: unspecified
// CLIENT-NONRES-NEXT: sil package [ossa] @$s6Client1fySi5Utils12PublicStructVF : $@convention(thin) (PublicStruct) -> Int
public func ff(_ arg: PublicStruct) -> Int {
return arg.data
}
// CLIENT-RES-LABEL: // ff(_:)
// CLIENT-RES-NEXT: // Isolation: unspecified
// CLIENT-RES-NEXT: sil [ossa] @$s6Client2ffySi5Utils12PublicStructVF : $@convention(thin) (@in_guaranteed PublicStruct) -> Int
// CLIENT-NONRES-LABEL: // ff(_:)
// CLIENT-NONRES-NEXT: // Isolation: unspecified
// CLIENT-NONRES-NEXT: sil [ossa] @$s6Client2ffySi5Utils12PublicStructVF : $@convention(thin) (PublicStruct) -> Int
public func fx(_ arg: FrozenPublicStruct) -> Int {
return arg.data
}
// CLIENT-COMMON-LABEL: // fx(_:)
// CLIENT-COMMON-LABEL: sil [ossa] @$s6Client2fxySi5Utils18FrozenPublicStructVF : $@convention(thin) (FrozenPublicStruct) -> Int {
// CLIENT-COMMON-LABEL: // %0 "arg"
// CLIENT-COMMON-LABEL: bb0(%0 : $FrozenPublicStruct):
// CLIENT-COMMON-LABEL: debug_value %0 : $FrozenPublicStruct, let, name "arg", argno 1
// CLIENT-COMMON-LABEL: %2 = struct_extract %0 : $FrozenPublicStruct, #FrozenPublicStruct.data
// CLIENT-COMMON-LABEL: return %2 : $Int
// CLIENT-COMMON-LABEL: } // end sil function '$s6Client2fxySi5Utils18FrozenPublicStructVF'
package func fy(_ arg: FrozenPublicStruct) -> Int {
return arg.data
}
// CLIENT-COMMON-LABEL: // fy(_:)
// CLIENT-COMMON-LABEL: sil package [ossa] @$s6Client2fyySi5Utils18FrozenPublicStructVF : $@convention(thin) (FrozenPublicStruct) -> Int {
// CLIENT-COMMON-LABEL: // %0 "arg"
// CLIENT-COMMON-LABEL: bb0(%0 : $FrozenPublicStruct):
// CLIENT-COMMON-LABEL: debug_value %0 : $FrozenPublicStruct, let, name "arg", argno 1
// CLIENT-COMMON-LABEL: %2 = struct_extract %0 : $FrozenPublicStruct, #FrozenPublicStruct.data
// CLIENT-COMMON-LABEL: return %2 : $Int
// CLIENT-COMMON-LABEL: } // end sil function '$s6Client2fyySi5Utils18FrozenPublicStructVF'
package func g(_ arg: PkgStruct) -> Int {
return arg.data
}
// CLIENT-RES-LABEL: // g(_:)
// CLIENT-RES-NEXT: // Isolation: unspecified
// CLIENT-RES-NEXT: sil package [ossa] @$s6Client1gySi5Utils9PkgStructVF : $@convention(thin) (@in_guaranteed PkgStruct) -> Int
// CLIENT-RES-LABEL: // PkgStruct.data.getter
// CLIENT-RES-NEXT: // Isolation: unspecified
// CLIENT-RES-NEXT: sil package_external @$s5Utils9PkgStructV4dataSivg : $@convention(method) (@in_guaranteed PkgStruct) -> Int
// CLIENT-NONRES-LABEL: // g(_:)
// CLIENT-NONRES-NEXT: // Isolation: unspecified
// CLIENT-NONRES-NEXT: sil package [ossa] @$s6Client1gySi5Utils9PkgStructVF : $@convention(thin) (PkgStruct) -> Int
package func gx(_ arg: UfiPkgClass) -> Int {
return arg.data
}
// CLIENT-COMMON-LABEL: // gx(_:)
// CLIENT-COMMON-NEXT: // Isolation: unspecified
// CLIENT-COMMON-NEXT: sil package [ossa] @$s6Client2gxySi5Utils11UfiPkgClassCF : $@convention(thin) (@guaranteed UfiPkgClass) -> Int {
package func m<T>(_ arg: PkgStructGeneric<T>) -> T {
return arg.data
}
// CLIENT-RES-LABEL: // m<A>(_:)
// CLIENT-RES-NEXT: // Isolation: unspecified
// CLIENT-RES-NEXT: sil package [ossa] @$s6Client1myx5Utils16PkgStructGenericVyxGlF : $@convention(thin) <T> (@in_guaranteed PkgStructGeneric<T>) -> @out T {
// CLIENT-RES-LABEL: // PkgStructGeneric.data.getter
// CLIENT-RES-NEXT: // Isolation: unspecified
// CLIENT-RES-NEXT: sil package_external @$s5Utils16PkgStructGenericV4dataxvg : $@convention(method) <τ_0_0> (@in_guaranteed PkgStructGeneric<τ_0_0>) -> @out τ_0_0
// CLIENT-NONRES-LABEL: // m<A>(_:)
// CLIENT-NONRES-NEXT: // Isolation: unspecified
// CLIENT-NONRES-NEXT: sil package [ossa] @$s6Client1myx5Utils16PkgStructGenericVyxGlF : $@convention(thin) <T> (@in_guaranteed PkgStructGeneric<T>) -> @out T {
package func m<T>(_ arg: PkgClassGeneric<T>) -> T {
return arg.data
}
package func n(_ arg: PkgStructWithPublicMember) -> Int {
return arg.member.data
}
// CLIENT-RES-LABEL: // n(_:)
// CLIENT-RES-NEXT: // Isolation: unspecified
// CLIENT-RES-NEXT: sil package [ossa] @$s6Client1nySi5Utils25PkgStructWithPublicMemberVF : $@convention(thin) (@in_guaranteed PkgStructWithPublicMember) -> Int
// CLIENT-RES-LABEL: // PkgStructWithPublicMember.member.getter
// CLIENT-RES-NEXT: // Isolation: unspecified
// CLIENT-RES-NEXT: sil package_external @$s5Utils25PkgStructWithPublicMemberV6memberAA0eC0Vvg : $@convention(method) (@in_guaranteed PkgStructWithPublicMember) -> @out PublicStruct
// CLIENT-NONRES-LABEL: // n(_:)
// CLIENT-NONRES-NEXT: // Isolation: unspecified
// CLIENT-NONRES-NEXT: sil package [ossa] @$s6Client1nySi5Utils25PkgStructWithPublicMemberVF : $@convention(thin) (PkgStructWithPublicMember) -> Int
package func p(_ arg: PkgStructWithPublicExistential) -> any PublicProto {
return arg.member
}
// CLIENT-RES-LABEL: // p(_:)
// CLIENT-RES-NEXT: // Isolation: unspecified
// CLIENT-RES-NEXT: sil package [ossa] @$s6Client1py5Utils11PublicProto_pAC013PkgStructWithC11ExistentialVF : $@convention(thin) (@in_guaranteed PkgStructWithPublicExistential) -> @out any PublicProto {
// CLIENT-RES-LABEL: // PkgStructWithPublicExistential.member.getter
// CLIENT-RES-NEXT: // Isolation: unspecified
// CLIENT-RES-NEXT: sil package_external @$s5Utils30PkgStructWithPublicExistentialV6memberAA0E5Proto_pvg : $@convention(method) (@in_guaranteed PkgStructWithPublicExistential) -> @out any PublicProto
// CLIENT-NONRES-LABEL: // p(_:)
// CLIENT-NONRES-NEXT: // Isolation: unspecified
// CLIENT-NONRES-NEXT: sil package [ossa] @$s6Client1py5Utils11PublicProto_pAC013PkgStructWithC11ExistentialVF : $@convention(thin) (@in_guaranteed PkgStructWithPublicExistential) -> @out any PublicProto {
package func q(_ arg: PkgStructWithPkgExistential) -> any PkgProto {
return arg.member
}
// CLIENT-RES-LABEL: // q(_:)
// CLIENT-RES-NEXT: // Isolation: unspecified
// CLIENT-RES-NEXT: sil package [ossa] @$s6Client1qy5Utils8PkgProto_pAC0c10StructWithC11ExistentialVF : $@convention(thin) (@in_guaranteed PkgStructWithPkgExistential) -> @out any PkgProto {
// CLIENT-RES-LABEL: // PkgStructWithPkgExistential.member.getter
// CLIENT-RES-NEXT: // Isolation: unspecified
// CLIENT-RES-NEXT: sil package_external @$s5Utils013PkgStructWithB11ExistentialV6memberAA0B5Proto_pvg : $@convention(method) (@in_guaranteed PkgStructWithPkgExistential) -> @out any PkgProto
// CLIENT-NONRES-LABEL: // q(_:)
// CLIENT-NONRES-NEXT: // Isolation: unspecified
// CLIENT-NONRES-NEXT: sil package [ossa] @$s6Client1qy5Utils8PkgProto_pAC0c10StructWithC11ExistentialVF : $@convention(thin) (@in_guaranteed PkgStructWithPkgExistential) -> @out any PkgProto {
package func r(_ arg: PublicProto) -> Int {
return arg.data
}
// CLIENT-COMMON-LABEL: // r(_:)
// CLIENT-COMMON-NEXT: // Isolation: unspecified
// CLIENT-COMMON-NEXT: sil package [ossa] @$s6Client1rySi5Utils11PublicProto_pF : $@convention(thin) (@in_guaranteed any PublicProto) -> Int {
package func s(_ arg: PkgProto) -> Int {
return arg.data
}
// CLIENT-COMMON-LABEL: // s(_:)
// CLIENT-COMMON-NEXT: // Isolation: unspecified
// CLIENT-COMMON-NEXT: sil package [ossa] @$s6Client1sySi5Utils8PkgProto_pF : $@convention(thin) (@in_guaranteed any PkgProto) -> Int {
public func t(_ arg: any PublicProto) -> Int {
return arg.pfunc(arg.data)
}
// CLIENT-COMMON-LABEL: // t(_:)
// CLIENT-COMMON-LABEL: sil [ossa] @$s6Client1tySi5Utils11PublicProto_pF : $@convention(thin) (@in_guaranteed any PublicProto) -> Int
public func u(_ arg: PublicKlass) -> Int {
return arg.pfunc(arg.data)
}
// CLIENT-COMMON-LABEL: // u(_:)
// CLIENT-COMMON-LABEL: sil [ossa] @$s6Client1uySi5Utils11PublicKlassCF : $@convention(thin) (@guaranteed PublicKlass) -> Int
package func v(_ arg: any PkgProto) -> Int {
return arg.pkgfunc(arg.data)
}
// CLIENT-COMMON-LABEL: // v(_:)
// CLIENT-COMMON-LABEL: sil package [ossa] @$s6Client1vySi5Utils8PkgProto_pF : $@convention(thin) (@in_guaranteed any PkgProto) -> Int
package func w(_ arg: PkgKlass) -> Int {
return arg.pkgfunc(arg.data)
}
// CLIENT-COMMON-LABEL: // w(_:)
// CLIENT-COMMON-NEXT: // Isolation: unspecified
// CLIENT-COMMON-NEXT: sil package [ossa] @$s6Client1wySi5Utils8PkgKlassCF : $@convention(thin) (@guaranteed PkgKlass) -> Int