mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
The main point of this change is to make sure that a shared function always has a body: both, in the optimizer pipeline and in the swiftmodule file. This is important because the compiler always needs to emit code for a shared function. Shared functions cannot be referenced from outside the module. In several corner cases we missed to maintain this invariant which resulted in unresolved-symbol linker errors. As side-effect of this change we can drop the shared_external SIL linkage and the IsSerializable flag, which simplifies the serialization and linkage concept.
40 lines
1.2 KiB
Plaintext
40 lines
1.2 KiB
Plaintext
sil_stage raw // CHECK: sil_stage canonical
|
|
|
|
import Builtin
|
|
import Swift
|
|
|
|
actor Act { }
|
|
|
|
@_transparent public func serialize_all() {
|
|
}
|
|
|
|
// CHECK-LABEL: sil public_external [transparent] @test_hop_to_executor_actor
|
|
sil [transparent] [serialized] @test_hop_to_executor_actor : $@convention(thin) (@guaranteed Act) -> () {
|
|
bb0(%0 : $Act):
|
|
// CHECK: hop_to_executor %0 : $Act
|
|
hop_to_executor %0 : $Act
|
|
// CHECK: hop_to_executor [mandatory] %0 : $Act
|
|
hop_to_executor [mandatory] %0 : $Act
|
|
%2 = tuple ()
|
|
return %2 : $()
|
|
}
|
|
|
|
// CHECK-LABEL: sil public_external [transparent] @test_hop_to_executor_builtin
|
|
sil [transparent] [serialized] @test_hop_to_executor_builtin : $@convention(thin) (@guaranteed Builtin.Executor) -> () {
|
|
bb0(%0 : $Builtin.Executor):
|
|
// CHECK: hop_to_executor %0 : $Builtin.Executor
|
|
hop_to_executor %0 : $Builtin.Executor
|
|
%2 = tuple ()
|
|
return %2 : $()
|
|
}
|
|
|
|
sil [transparent] [serialized] @$s15def_concurrency13serialize_allyyF : $@convention(thin) () -> () {
|
|
bb0:
|
|
%0 = function_ref @test_hop_to_executor_actor : $@convention(thin) (@guaranteed Act) -> ()
|
|
%1 = function_ref @test_hop_to_executor_builtin : $@convention(thin) (@guaranteed Builtin.Executor) -> ()
|
|
|
|
%r = tuple ()
|
|
return %r : $()
|
|
}
|
|
|