-
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
JIT: Remove "add copies" phase #83310
Conversation
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch, @kunalspathak Issue Detailsnull
|
// Introduce copies for some single-def locals to make them more | ||
// amenable to optimization | ||
// | ||
DoPhase(this, PHASE_OPTIMIZE_ADD_COPIES, &Compiler::optAddCopies); |
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.
Remove PHASE_OPTIMIZE_ADD_COPIES
from compphases.h ?
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.
Whoops, good catch, done!
Nice wins actually 😄 (except TP on arm32) |
This is likely just an artifact of the decreased size of |
This reverts commit e7e2c27.
Diffs when the fields are left in, but with the pass itself removed. cc @dotnet/jit-contrib -- I propose that we remove this phase. The phase itself is overall a regression to have around, both on TP and ASM diffs. In addition it requires 16 bytes in runtime/src/coreclr/jit/assertionprop.cpp Lines 554 to 580 in 588dcd7
The first check there also means it kicks in even less in customer code that doesn't have |
This phase seems to try to do some ad-hoc live range splitting to improve things in assertion prop, but it almost barely kicks in due to the following checks:
runtime/src/coreclr/jit/assertionprop.cpp
Lines 554 to 580 in 588dcd7
When it does kick in it seems to overall be a regression (diffs), both in ASM diffs and in TP diffs.
Furthermore, we pay 16 bytes in every
LclVarDsc
(out of 88) for bookkeeping purposes for this pass, even in MinOpts.