diff options
| author | Michael Goulet <michael@errs.io> | 2024-01-06 21:51:44 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-01-06 21:51:44 -0500 |
| commit | b8e1a3443bf3c1293969a657c22c580d728e93ec (patch) | |
| tree | 74905cdb433f91391fb7e9a0b95ec247ac5690c5 | |
| parent | 78c988fe3e497d181ddc07ba954f902c1cf1d480 (diff) | |
| parent | 6d8fb57d1a47f61c8a7a9d58cd46e06174dba50f (diff) | |
| download | rust-b8e1a3443bf3c1293969a657c22c580d728e93ec.tar.gz rust-b8e1a3443bf3c1293969a657c22c580d728e93ec.zip | |
Rollup merge of #119252 - Enselic:rustc_mir_transform-query-stability, r=cjgillot
rustc_mir_transform: Enforce `rustc::potential_query_instability` lint Stop allowing `rustc::potential_query_instability` on all of rustc_mir_transform and instead allow it on a case-by-case basis if it is safe to do so. In this particular crate, all instances were safe to allow. Part of https://github.com/rust-lang/rust/issues/84447 which is E-help-wanted.
| -rw-r--r-- | compiler/rustc_mir_transform/src/const_prop_lint.rs | 2 | ||||
| -rw-r--r-- | compiler/rustc_mir_transform/src/lib.rs | 1 | ||||
| -rw-r--r-- | compiler/rustc_mir_transform/src/unreachable_prop.rs | 2 |
3 files changed, 4 insertions, 1 deletions
diff --git a/compiler/rustc_mir_transform/src/const_prop_lint.rs b/compiler/rustc_mir_transform/src/const_prop_lint.rs index 99eecb567f2..d0bbca08a40 100644 --- a/compiler/rustc_mir_transform/src/const_prop_lint.rs +++ b/compiler/rustc_mir_transform/src/const_prop_lint.rs @@ -670,6 +670,8 @@ impl<'tcx> Visitor<'tcx> for ConstPropagator<'_, 'tcx> { // This loop can get very hot for some bodies: it check each local in each bb. // To avoid this quadratic behaviour, we only clear the locals that were modified inside // the current block. + // The order in which we remove consts does not matter. + #[allow(rustc::potential_query_instability)] for local in written_only_inside_own_block_locals.drain() { debug_assert_eq!( self.ecx.machine.can_const_prop[local], diff --git a/compiler/rustc_mir_transform/src/lib.rs b/compiler/rustc_mir_transform/src/lib.rs index 164b6b9c4f5..f5f51c0ec8a 100644 --- a/compiler/rustc_mir_transform/src/lib.rs +++ b/compiler/rustc_mir_transform/src/lib.rs @@ -1,4 +1,3 @@ -#![allow(rustc::potential_query_instability)] #![deny(rustc::untranslatable_diagnostic)] #![deny(rustc::diagnostic_outside_of_impl)] #![feature(box_patterns)] diff --git a/compiler/rustc_mir_transform/src/unreachable_prop.rs b/compiler/rustc_mir_transform/src/unreachable_prop.rs index f12a6aa2429..bff59aa6023 100644 --- a/compiler/rustc_mir_transform/src/unreachable_prop.rs +++ b/compiler/rustc_mir_transform/src/unreachable_prop.rs @@ -54,6 +54,8 @@ impl MirPass<'_> for UnreachablePropagation { patch.apply(body); // We do want do keep some unreachable blocks, but make them empty. + // The order in which we clear bb statements does not matter. + #[allow(rustc::potential_query_instability)] for bb in unreachable_blocks { body.basic_blocks_mut()[bb].statements.clear(); } |
