-
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
Check that 'lvDoNotEnregister' is set as necessary. #52802
Conversation
378b981
to
1a62d7d
Compare
Check that we don't have independently promoted LCL_VAR that are references after lowering. Check that all LclVars that have ADDR() on top of them are marked as doNotEnreg. In the past when we did not enregister structs we were allocating them on the stack even without doNotEnreg set.
1a62d7d
to
ca4fb4d
Compare
/azp run runtime-coreclr jitstress |
Azure Pipelines successfully started running 1 pipeline(s). |
I think this is ready for review, PTAL @dotnet/jit-contrib |
You can ignore the pgo failures, sorry about that. |
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.
Perhaps consider adding a debug-only field that tracks the union of all the DNER settings for a local var, and adjust the dump info to show all reasons?
Sound valuable, will add in one of the next changes. |
In order to enable #43867 by default we need to make sure that all structs that should be on the stack are marked as doNotEnreg. Currently, it is not very important because all structs are getting their 'doNotEnreg' just because they are structs.
This PR adds check that after lowering we have correct
lvDoNotEnreg
flag on variables that are accessed via their address or via non-promoted fields or with both promoted and non-promoted accesses.If you see more contracts related to doNotEnreg that can be added - please comment. There are also many unclear parts about multi-reg nodes that I am going to address soon.
No diffs (all available spmi collections) as expected.
Fixes #49780 (change in rationalize RewriteSIMDIndir).
Contributes to #43867, needed #53269 (phi store of long vars were not decomposed so the contract for them did not hold), #53067, #52803.