-
Notifications
You must be signed in to change notification settings - Fork 10.5k
Ensure that bridged types are indirectly returned on Windows ARM64 #76589
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
On Windows ARM64, how a struct value type is returned is sensitive to conditions including whether a user-defined constructor exists, etc. See https://learn.microsoft.com/en-us/cpp/build/arm64-windows-abi-conventions?view=msvc-170#return-values That caused a calling convention mismatch between the non-USED_IN_CPP_SOURCE (Swift) side and the USE_IN_CPP_SOURCE (C++) side and a crash. Following swiftlang#76433 add constructors to several bridged C++ struct/class types so that the calling convention matches. This is a partial fix for swiftlang#74866
@swift-ci please test |
@swift-ci please test linux platform |
1 similar comment
@swift-ci please test linux platform |
@DougGregor Would you take a look? This is a follow-up to the previous #76433. |
Thanks! |
Oh nice! Merged (hoping it's not too much trouble rebasing that). Thank you! |
@eeckstein Actually I'll test eeckstein@f4af4d1 in my local setup and create a PR, if that's okay. |
@eeckstein I locally tested and it can build the toolchain as before (no regression.) I created #76675 based on eeckstein@f4af4d1. |
On Windows ARM64, how a struct value type is returned is sensitive to conditions including whether a user-defined constructor exists, etc. See https://learn.microsoft.com/en-us/cpp/build/arm64-windows-abi-conventions?view=msvc-170#return-values That caused a calling convention mismatch between the non-USED_IN_CPP_SOURCE (Swift) side and the USE_IN_CPP_SOURCE (C++) side and a crash. Following swiftlang#76433 add constructors to several bridged C++ struct/class types so that the calling convention matches. This is a partial fix for swiftlang#74866 Cherrypick swiftlang#76589
On Windows ARM64, how a struct value type is returned is sensitive to conditions including whether a user-defined constructor exists, etc. See https://learn.microsoft.com/en-us/cpp/build/arm64-windows-abi-conventions?view=msvc-170#return-values That caused a calling convention mismatch between the non-USED_IN_CPP_SOURCE (Swift) side and the USE_IN_CPP_SOURCE (C++) side and a crash. Following swiftlang#76433 add constructors to several bridged C++ struct/class types so that the calling convention matches. This is a partial fix for swiftlang#74866 Cherrypick swiftlang#76589
On Windows ARM64, how a struct value type is returned is sensitive to conditions including whether a user-defined constructor exists, etc. See
https://learn.microsoft.com/en-us/cpp/build/arm64-windows-abi-conventions?view=msvc-170#return-values
That caused a calling convention mismatch between the non-USED_IN_CPP_SOURCE (Swift) side and the USE_IN_CPP_SOURCE (C++) side and a crash.
Following #76433 add constructors to several bridged C++ struct/class types so that the calling convention matches.
This is a partial fix for #74866