-
Notifications
You must be signed in to change notification settings - Fork 5.3k
JIT: Handle more unsupported argument conversion cases #119328
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 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.
|
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch |
|
cc @dotnet/jit-contrib PTAL @AndyAyersMS |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR fixes a JIT compilation issue on 32-bit platforms where long operands passed to functions expecting parameters in double registers would incorrectly attempt unsupported bitcast operations. The fix generalizes the detection of unsupported argument conversion cases.
Key changes:
- Removes an incorrect assertion about register/stack slot counts for long arguments
- Generalizes the condition for detecting unsupported int-to-float register conversions beyond just SIMD types
|
/backport to release/10.0 |
|
Started backporting to release/10.0: https://github.com/dotnet/runtime/actions/runs/17491769642 |
|
@jakobbotsch backporting to "release/10.0" failed, the patch most likely resulted in conflicts: $ git am --3way --empty=keep --ignore-whitespace --keep-non-patch changes.patch
Applying: JIT: Handle more unsupported argument conversion cases
Using index info to reconstruct a base tree...
M src/coreclr/jit/lower.cpp
Falling back to patching base and 3-way merge...
Auto-merging src/coreclr/jit/lower.cpp
CONFLICT (content): Merge conflict in src/coreclr/jit/lower.cpp
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
hint: When you have resolved this problem, run "git am --continue".
hint: If you prefer to skip this patch, run "git am --skip" instead.
hint: To restore the original branch and stop patching, run "git am --abort".
hint: Disable this message with "git config set advice.mergeConflict false"
Patch failed at 0001 JIT: Handle more unsupported argument conversion cases
Error: The process '/usr/bin/git' failed with exit code 128Please backport manually! |
On 32-bit platforms we can end up with long operands to a function taking a parameter in a double register. We would try to create bitcasts for this case, which is not supported for 32 bit.
Generalize a condition to properly detect this unsupported case.
Fix #119062