-
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
Fix optIsLoopEntry to skip removed loops #61527
Conversation
This was preventing block compaction with loop entry blocks in loops that had been previously optimized away (and thus removed from the loop table). There are a few cases where we now delete dead code that was previously left in the function. There are a number of spurious local weighting and IG textual asm diffs changes, possibly due to how PerfScore is implemented (there are some surprisingly large PerfScore changes in a few cases, despite no change in (most) generated code).
Tagging subscribers to this area: @JulieLeeMSFT Issue DetailsThis was preventing block compaction with loop entry blocks in loops There are a few cases where we now delete dead code that was previously
|
@dotnet/jit-contrib PTAL |
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.
I wonder how many other places get fooled by removed loops.
I assume you are (or have) been looking for this.
I was prototyping some loop table iterators, including ones that would automatically skip "removed" loops. This involved looking at the various places that currently loop over the table. However, in this case, I found the problem because I had a bug in my iterator that led to unexpected asm diffs! |
This was preventing block compaction with loop entry blocks in loops
that had been previously optimized away (and thus removed from the
loop table).
There are a few cases where we now delete dead code that was previously
left in the function. There are a number of spurious local weighting
and IG textual asm diffs changes, possibly due to how PerfScore is implemented
(there are some surprisingly large PerfScore changes in a few cases,
despite no change in (most) generated code).