[6.2] IRGen: Fix miscompile when a generic parameter is fixed to a tuple containing a pack #81565
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.
6.2 cherry-pick of #68130.
Description: Fixes a miscompile if you fix a generic parameter of a nominal type to a tuple containing a pack expansion:
If you then call f() with a one-element pack, we would crash at runtime.
Origination: Regression was introduced with this change in Swift 5.10: IRGen: Fulfill pack metadata from tuple metadata #68130
Risk: Low. This does change the calling convention, but not the mangling, in this specific scenario where the old calling convention passed the wrong information. This change reverts to the Swift 5.9 calling convention, since the specific pattern was only intended to kick in with tuple conformance witness thunks.
Reviewed by: TBD