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.
18 lines
789 B
Swift
18 lines
789 B
Swift
// RUN: %empty-directory(%t)
|
|
// RUN: %target-build-swift -emit-module -Xfrontend -disable-availability-checking -Xfrontend -disable-diagnostic-passes -whole-module-optimization -Xfrontend -enable-objc-interop -o %t/def_concurrency.swiftmodule %S/Inputs/def_concurrency.sil
|
|
// RUN: llvm-bcanalyzer %t/def_concurrency.swiftmodule | %FileCheck %s
|
|
// RUN: %target-build-swift -emit-sil -I %t %s -o %t/concurrency_sil.sil
|
|
// RUN: %target-sil-opt -parse-serialized-sil -I %t %t/concurrency_sil.sil -performance-linker | %FileCheck %S/Inputs/def_concurrency.sil
|
|
|
|
// This test currently is written such that no optimizations are assumed.
|
|
// REQUIRES: swift_test_mode_optimize_none
|
|
// REQUIRES: concurrency
|
|
|
|
// CHECK-NOT: UnknownCode
|
|
|
|
import def_concurrency
|
|
|
|
func test_all() {
|
|
serialize_all()
|
|
}
|