[NewOptimizer] Domsort basic blocks #26306
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This sorts basic blocks into dominance order right after SSA construction.
Doing so has the benefit that linear traversals of the function
automatically become reverse post order traversals, or in other words,
we're guaranteed that during a linear traversal, we see any SSA
definitions before uses of those SSA values. This property is a prerequisite
for the incremental compactor to work correctly without back tracking.
It should also allow for simplifying codegen later, though not until
the new IR is the only thing supported by codegen.
Fixes core/asyncmap tests with the new optimizer enabled. I believe
those were the last tests that caused invalid IR generation (there's
still a few test failures due to the disabled alloc elim pass).