[IRGen] Emit keypath thunk helpers with swiftcc to match with the caller cc #39546
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
KeyPath thunk helpers are called from stdlib indirectly through
descriptor and its calling-convention in the caller side are SwiftCC.
However, the definition side expects C calling-convention, so they
can be broken on some architectures, that SwiftCC is not compatible
with C-CC on it.
This patch changes to use SwiftCC consistently on caller side and
definition side.
This doesn't have any effect on the ABI stable platforms because
SwiftCC is compatible with C-CC on them.
The caller-side signatures are defined here without
@convention(c)
https://github.com/apple/swift/blob/ef4a2eeb6b8347752897f43351da946cbf1323d7/stdlib/public/core/KeyPath.swift#L481-L486
https://github.com/apple/swift/blob/ef4a2eeb6b8347752897f43351da946cbf1323d7/stdlib/public/core/KeyPath.swift#L568-L581
This fixes case 2 of https://bugs.swift.org/browse/SR-15188
CC: @MaxDesiatov