-
Notifications
You must be signed in to change notification settings - Fork 5.2k
Try add loop IDom assert #84216
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
Try add loop IDom assert #84216
Conversation
When traversing the IDom tree from the single loop exit, you must reach the single loop entry.
|
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch, @kunalspathak Issue DetailsWhen traversing the IDom tree from the single loop exit, you must reach the single loop entry.
|
|
/azp run runtime-coreclr outerloop |
|
Azure Pipelines successfully started running 1 pipeline(s). |
|
There are a few asserts on spmi replay on win-x86 on libraries_tests.pmi: |
|
One case (291793) looks like the following: So, we've got an infinite loop where the "loop exit" is a branch from the "catch". Note that on x86 the handlers haven't been moved to funclets. BB03, the handler, has no predecessors in our graph, so is a dominator "root". The IDom parent is empty. Walking up from this exit will obviously not reach the loop entry. This seems very strange. Perhaps we should disallow handler branches to be considered as a loop exit? Perhaps we should verify and assert that a loop entry dominates all its exits? |
When traversing the IDom tree from the single loop exit, you must reach the single loop entry.