-
Notifications
You must be signed in to change notification settings - Fork 4.7k
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
Do not number partial definitions and ARGPLACE
nodes
#64898
Conversation
Tagging subscribers to this area: @JulieLeeMSFT Issue DetailsThree changes in this set:
Overall, we are saving a little under No diffs are expected.
|
const GenTree* nextNode = lcl->gtNext; | ||
const LclVarDsc* varDsc = lvaGetDesc(lcl); | ||
|
||
assert((nextNode->gtOper == GT_ADDR && nextNode->AsOp()->gtOp1 == lcl) || |
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.
Didn't replicate this assert as I don't find it useful - yes, we will see some locals under ADDR
s here, but that's just how the IR is.
@dotnet/jit-contrib |
Do not number "partial definitions" - it is simply wasted work.
For ARGPLACE nodes, they will be overwritten when numbering the call. For nodes that do not produce values, they serve no purpose, and just waste memory. Also, delete RET_EXPR/FTN_ADDR handling. They will never appear in VN.
43148e0
to
b55d061
Compare
Three changes in this set:
LCL_VAR
"uses" - preserve the old behavior, reduce confusion on what should and should not be numbered, make the kinds of type mismatches we expect (and tolerate) explicit via asserts.ARGPLACE
nodes - this, again, is simply wasting memory, as the nodes in question will have their VNs always reset byfgValueNumberCall
anyway.Overall, we are saving a little under
0.4%
in memory consumption when CG-ing x64 Release CoreLib with these changes.No diffs as expected.