1
Fork 0
rust/compiler/rustc_session/src
Matthias Krüger ddbeda1302
Rollup merge of #96090 - JakobDegen:mir-tests, r=nagisa
Implement MIR opt unit tests

This implements rust-lang/compiler-team#502 .

There's not much to say here, this implementation does everything as proposed. I also added the flag to a bunch of existing tests (mostly those to which I could add it without causing huge diffs due to changes in line numbers). Summarizing the changes to test outputs:
 - Every time an `MirPatch` is created, it adds a cleanup block to the body if it did not exist already. If this block is unused (as is usually the case), it usually gets removed soon after by some pass calling `SimplifyCFG` for unrelated reasons (in many cases this cycle happens quite a few times for a single body). We now run `SimplifyCFG` less often, so those blocks end up in some of our outputs. I looked at changing `MirPatch` to not do this, but that seemed too complicated for this PR. I may still do that in a follow-up.
 - The `InstCombine` test had set `-C opt-level=0` in its flags and so there were no storage markers. I don't really see a good motivation for doing this, so bringing it back in line with what everything else does seems correct.
 - One of the `EarlyOtherwiseBranch` tests had `UnreachableProp` running on it. Preventing that kind of thing is the goal of this feature, so this seems fine.

For the remaining tests for which this feature might be useful, we can gradually migrate them as opportunities present themselves.

In terms of documentation, I plan on submitting a PR to the rustc dev guide in the near future documenting this and other recent changes to MIR. If there's any other places to update, do let me know

r? `@nagisa`
2022-04-25 00:10:59 +02:00
..
cgu_reuse_tracker.rs Prettify rustc_session fmt with capturing args (nfc) 2022-03-24 22:38:13 -07:00
code_stats.rs Vigorously refactor _session::code_stats (nfc) 2022-03-24 22:38:16 -07:00
config.rs Add support for nounused --extern flag 2022-04-23 23:31:54 -07:00
cstore.rs Stabilize native library modifier syntax and the whole-archive modifier specifically 2022-03-30 23:53:21 +03:00
filesearch.rs Prettify rustc_session fmt with capturing args (nfc) 2022-03-24 22:38:13 -07:00
lib.rs Stabilize derive_default_enum 2022-04-07 20:03:19 -04:00
options.rs Rollup merge of #96090 - JakobDegen:mir-tests, r=nagisa 2022-04-25 00:10:59 +02:00
output.rs Use a let-chain in _session::output (nfc) 2022-03-24 22:38:32 -07:00
parse.rs errors: lazily load fallback fluent bundle 2022-04-13 02:44:59 +01:00
search_paths.rs incr. comp.: Don't export impl_stable_hash_via_hash!() and warn about using it. 2022-04-19 10:43:20 +02:00
session.rs Rollup merge of #96026 - matthiaskrgr:clippy_compl_1304, r=Dylan-DPC 2022-04-15 20:50:47 +02:00
utils.rs incr. comp.: Don't export impl_stable_hash_via_hash!() and warn about using it. 2022-04-19 10:43:20 +02:00