Verify non-critical edges in OSSA #34635
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 allows us to start cleaning up passes that do weird things with critical edges, as long as those passes are limited to OSSA. For example, CopyProgagation was broken in this respect. Now we can write simpler OSSA passes that deal with block arguments.
Also, we can now make a clear distinction between passes that modify the CFG and those that don't. This lets us do much better at preserving analysis results across passes.
Most importantly for me, it stops the onslaught of new .sil tests with critical edges which take a lot of time to rewrite later.