Files
swift-mirror/test/SILGen/c_modify_linkage.swift
Erik Eckstein 6a020f8f15 Stabilize and simplify SIL linkage and serialization
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.
2022-03-09 15:28:05 +01:00

22 lines
621 B
Swift

// RUN: %target-swift-emit-silgen -sdk %S/Inputs -I %S/Inputs -enable-source-import %s -enable-objc-interop | %FileCheck %s
import AppKit
protocol Pointable {
var x: Float { get set }
var y: Float { get set }
}
extension NSPoint: Pointable {}
extension NSReferencePoint: Pointable {}
// Make sure synthesized modify accessors have shared linkage
// for properties imported from Clang.
// CHECK-LABEL: sil shared [serialized] [ossa] @$sSo7NSPointV1ySfvM
// CHECK-LABEL: sil shared [serialized] [ossa] @$sSo16NSReferencePointC1xSfvM
// CHECK-LABEL: sil shared [serialized] [ossa] @$sSo16NSReferencePointC1ySfvM