[release/10.0] JIT: Handle more unsupported argument conversion cases#119388
Merged
jeffschwMSFT merged 1 commit intodotnet:release/10.0from Sep 11, 2025
Merged
[release/10.0] JIT: Handle more unsupported argument conversion cases#119388jeffschwMSFT merged 1 commit intodotnet:release/10.0from
jeffschwMSFT merged 1 commit intodotnet:release/10.0from
Conversation
On 32-bit platforms we can end up with long operands to a function taking a parameter in a double. We would try to create bitcasts for this cast. Generalize a condition to properly detect this unsupported case.
Contributor
There was a problem hiding this comment.
Pull Request Overview
This backport PR fixes a JIT compiler issue on ARM32 where bad codegen could occur when an 8-byte struct is classified as being passed in a double register but the operand is in integer registers. The fix prevents invalid IR generation by adding checks for unsupported argument conversion cases.
Key changes:
- Removes an assertion that was too restrictive for certain struct passing scenarios
- Adds validation to prevent unsupported int-to-float register conversions that require insertions
Contributor
|
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch |
jeffschwMSFT
approved these changes
Sep 5, 2025
Member
jeffschwMSFT
left a comment
There was a problem hiding this comment.
approved. please get a code review. we can merge when ready
Open
3 tasks
AndyAyersMS
approved these changes
Sep 9, 2025
Member
Author
|
/ba-g Android timeout failure |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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 #119328 to release/10.0
Customer Impact
Potential bad codegen when an 8 byte struct is classified as being passed in a double register on arm32. If the JIT ends up with an operand that is in integer registers, then it produces an invalid IR that it is not prepared to handle.
Regression
Testing
Existing stress testing revealed the issue in #119062, and the fix was verified on that test.
Risk
Low