[release/6.0] Do not promote struct locals with holes #62738
Merged
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.
Backport of #62645 to release/6.0
/cc @kunalspathak
Customer Impact
This is a fix for customer reported issue in #62597 where we would zero out the struct fields leading to incorrect result. This functionality was regressed during .NET 6 in #43870.
Testing
All the tests, superpmi-replay.
Risk
Earlier, we would optimize and use registers to pass the struct arguments, but with this change, we would use memory instead, the way we had in .NET 5. There is not much performance impact as there are only few scenarios where we would disable the passing of structs using registers.