-
Notifications
You must be signed in to change notification settings - Fork 5.2k
JIT: Always remove commas while splitting #119275
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
There is no reason to keep the commas around, and for some struct IR it results in illegal IR (e.g. when splitting COMMA(op1, FIELD_LIST(...))).
/azp run runtime-coreclr jitstress, runtime-coreclr libraries-jitstress |
Azure Pipelines successfully started running 2 pipeline(s). |
/azp run runtime-coreclr jitstress, runtime-coreclr libraries-jitstress |
Azure Pipelines successfully started running 2 pipeline(s). |
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 issue where comma operators were sometimes incorrectly preserved during tree splitting, leading to illegal IR in certain cases. The fix ensures that comma operators are always properly removed during the splitting process.
Key changes:
- Added logic to automatically remove comma operators during tree splitting
- Prevents generation of illegal IR when splitting structures like
COMMA(op1, FIELD_LIST(...))
Comments suppressed due to low confidence (1)
src/coreclr/jit/gentree.cpp:1
- The code modifies
*use
at line 17171 but then uses the originaluseInf
parameter at line 17172, which still references the old comma node. After line 17171,useInf
should be updated to reflect the new use location, or a new UseInfo should be created for the second operand.
// Licensed to the .NET Foundation under one or more agreements.
cc @dotnet/jit-contrib PTAL @AndyAyersMS Some improvements, but most of all ensures we can split the IR shape mentioned above. |
There is no reason to keep the commas around, and for some struct IR it results in illegal IR (e.g. when splitting COMMA(op1, FIELD_LIST(...))).
There is no reason to keep the commas around, and for some struct IR it results in illegal IR (e.g. when splitting COMMA(op1, FIELD_LIST(...))).
Fixes an issue I hit over in #118778