-
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: Stop calling morph from CSE #106695
JIT: Stop calling morph from CSE #106695
Conversation
CSE cannot tolerate morph removing any defs, which many of morphs transformations can do. We have been slowly infecting morph with more and more checks to avoid this, but in reality CSE just should not reinvoke morph -- the benefits of doing this are minimal.
/azp run runtime-coreclr superpmi-diffs |
Azure Pipelines successfully started running 1 pipeline(s). |
cc @dotnet/jit-contrib PTAL @EgorBo Diffs. Regressions in cases where some morph optimizations no longer kick in after CSE, but I think they're small enough that we can accept them and see if something shows up in micro benchmarks before porting more transformations to lowering. Some TP improvements now that we avoid the morph call. |
I am curious why we didn't do it before instead of fixing morph with these checks 🙂 I presume some parts of morph also conservatively use |
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.
LGTM, agree that diffs aren't too bad to fix a popular source of bugs
Good question, I guess it was simpler to just keep adding those checks.
Ah yeah, some of those can probably be cleaned up. We still call morph from some other places, like assertion prop, but it's probably not as sensitive as CSE. I'll open an issue about investigating those. I also realized that I missed removing checks for |
CSE cannot tolerate morph removing any defs, which many of morphs transformations can do. We have been slowly infecting morph with more and more checks to avoid this, but in reality CSE just should not reinvoke morph -- the benefits of doing this are minimal.
Fix #108600