mirror of
https://github.com/rust-lang/rust.git
synced 2025-04-28 02:57:37 +00:00
Rollup merge of #128612 - compiler-errors:validate-mir-opt-mir, r=davidtwco
Make `validate_mir` ensure the final MIR for all bodies A lot of the crashes tests use `-Zpolymorphize` or `-Zdump-mir` for their side effect of computing the `optimized_mir` for all bodies, which will uncover bugs with late MIR passes like the inliner. I don't like having all these tests depend on `-Zpolymorphize` (or other hacky ways) for no reason, so this PR extends the `-Zvalidate-mir` flag to ensure `optimized_mir`/`mir_for_ctfe` for all body owners during the analysis phase. Two thoughts: 1. This could be moved later in the compilation pipeline I guess? I don't really think it matters, though. 1. This could alternatively be expressed using a new flag, though I don't necessarily see much value in separating these. For example, #128171 could have used this flag, in the `tests/ui/polymorphization/inline-incorrect-early-bound.rs`. r? mir
This commit is contained in:
commit
2d7075cf00
@ -818,6 +818,13 @@ fn run_required_analyses(tcx: TyCtxt<'_>) {
|
||||
});
|
||||
sess.time("layout_testing", || layout_test::test_layout(tcx));
|
||||
sess.time("abi_testing", || abi_test::test_abi(tcx));
|
||||
if tcx.sess.opts.unstable_opts.validate_mir {
|
||||
sess.time("ensuring_optimized_MIR_is_computable", || {
|
||||
tcx.hir().par_body_owners(|def_id| {
|
||||
tcx.instance_mir(ty::InstanceKind::Item(def_id.into()));
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/// Runs the type-checking, region checking and other miscellaneous analysis
|
||||
|
@ -1,5 +1,5 @@
|
||||
//@ known-bug: #121127
|
||||
//@ compile-flags: -Zpolymorphize=on -Zinline-mir=yes -C debuginfo=2
|
||||
//@ compile-flags: -Zvalidate-mir -Zinline-mir=yes -C debuginfo=2
|
||||
// Note that as of PR#123949 this only crashes with debuginfo enabled
|
||||
|
||||
#![feature(specialization)]
|
||||
|
@ -1,4 +1,4 @@
|
||||
//@ compile-flags: -Zpolymorphize=on -Zinline-mir=yes
|
||||
//@ compile-flags: -Zvalidate-mir -Zinline-mir=yes
|
||||
//@ known-bug: #122909
|
||||
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
//@ known-bug: rust-lang/rust#126896
|
||||
//@ compile-flags: -Zpolymorphize=on -Zinline-mir=yes
|
||||
//@ compile-flags: -Zvalidate-mir -Zinline-mir=yes
|
||||
|
||||
#![feature(type_alias_impl_trait)]
|
||||
type Two<'a, 'b> = impl std::fmt::Debug;
|
||||
|
Loading…
Reference in New Issue
Block a user