-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
Fold all local addresses in local morph #79194
Fold all local addresses in local morph #79194
Conversation
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue DetailsThis change enables folding for all local address trees in morph. This is a requirement for the next round of simplifications enabled by the There is some amount of (mostly positive) diffs due to more forward substitutions enabled by the fact
|
"getFieldClass" returns the field's owner class, not its own.
Unconditionally.
29df4b1
to
907a975
Compare
No diffs except for one regression in a 400K bytes struct test.
907a975
to
e7a3efa
Compare
@dotnet/jit-contrib @jakobbotsch This should solve the problem of return buffer calls not having defined address shape before morph. |
fyi, I reran the diffs/replay pipelines because they failed due to missing osx-arm64 MCH files. There should be some there now (but we're still missing libraries-pmi, which failed during collection) |
Looks great to me! I will run some stress jobs. |
/azp run runtime-coreclr jitstress, runtime-coreclr libraries-jitstress, Fuzzlyn |
Azure Pipelines successfully started running 3 pipeline(s). |
Stress failures so far: #78898, #58699 (present in the run just before the current one as well). Libraries stress failures: comparison point is https://dev.azure.com/dnceng-public/public/_build/results?buildId=102920&view=results (the previous run), |
This change enables folding for all local address trees in local morph. This is a requirement for the next round of simplifications enabled by the
ADDR
work (e. g. #78246 depends on this).There is some amount of (mostly positive) diffs due to more forward substitutions enabled by the fact
LCL_ADDR
nodes by themselves do not needGLOB_REF
. Some regressions in tests due to a bit moreGLOB_REF
ing for "wide" indirs. One case in a huge test method where swappingLCL_VAR
andLCL_VAR_ADDR
operands for a relop leads us to miss out on a lot ofmov
suppression.There is also a very nice TP win, up to
1%
reduction in instructions retired.