diff options
| author | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2021-03-05 21:44:40 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-03-05 21:44:40 +0100 |
| commit | 15c148b4f2b86f22c053bf08d3a2b76f76359a35 (patch) | |
| tree | 45c22b8d755fc5e607aa9ea8571373b54fb4de48 | |
| parent | 34b2caa79f4451ff7eede9a578295e1a48db4bf2 (diff) | |
| parent | 11d9390c93020330de935fc95d91fb557b1f782c (diff) | |
| download | rust-15c148b4f2b86f22c053bf08d3a2b76f76359a35.tar.gz rust-15c148b4f2b86f22c053bf08d3a2b76f76359a35.zip | |
Rollup merge of #82736 - spastorino:mir-opt-level-perf-changes, r=oli-obk
Bump optimization from mir_opt_level 2 to 3 and 3 to 4 and make "release" be level 2 by default r? `@oli-obk`
85 files changed, 117 insertions, 109 deletions
diff --git a/compiler/rustc_interface/src/tests.rs b/compiler/rustc_interface/src/tests.rs index 9a11b534887..28646973620 100644 --- a/compiler/rustc_interface/src/tests.rs +++ b/compiler/rustc_interface/src/tests.rs @@ -566,7 +566,7 @@ fn test_debugging_options_tracking_hash() { tracked!(link_only, true); tracked!(merge_functions, Some(MergeFunctions::Disabled)); tracked!(mir_emit_retag, true); - tracked!(mir_opt_level, 3); + tracked!(mir_opt_level, Some(4)); tracked!(mutable_noalias, true); tracked!(new_llvm_pass_manager, true); tracked!(no_codegen, true); diff --git a/compiler/rustc_mir/src/transform/const_goto.rs b/compiler/rustc_mir/src/transform/const_goto.rs index 3eb2e757644..b5c8b4bebc3 100644 --- a/compiler/rustc_mir/src/transform/const_goto.rs +++ b/compiler/rustc_mir/src/transform/const_goto.rs @@ -28,7 +28,7 @@ pub struct ConstGoto; impl<'tcx> MirPass<'tcx> for ConstGoto { fn run_pass(&self, tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>) { - if tcx.sess.opts.debugging_opts.mir_opt_level < 3 { + if tcx.sess.mir_opt_level() < 4 { return; } trace!("Running ConstGoto on {:?}", body.source); diff --git a/compiler/rustc_mir/src/transform/const_prop.rs b/compiler/rustc_mir/src/transform/const_prop.rs index 2a0e5e2c9c5..263df44f4d1 100644 --- a/compiler/rustc_mir/src/transform/const_prop.rs +++ b/compiler/rustc_mir/src/transform/const_prop.rs @@ -725,7 +725,7 @@ impl<'mir, 'tcx> ConstPropagator<'mir, 'tcx> { return None; } - if self.tcx.sess.opts.debugging_opts.mir_opt_level >= 3 { + if self.tcx.sess.mir_opt_level() >= 4 { self.eval_rvalue_with_identities(rvalue, place) } else { self.use_ecx(|this| this.ecx.eval_rvalue_into_place(rvalue, place)) @@ -903,7 +903,7 @@ impl<'mir, 'tcx> ConstPropagator<'mir, 'tcx> { /// Returns `true` if and only if this `op` should be const-propagated into. fn should_const_prop(&mut self, op: &OpTy<'tcx>) -> bool { - let mir_opt_level = self.tcx.sess.opts.debugging_opts.mir_opt_level; + let mir_opt_level = self.tcx.sess.mir_opt_level(); if mir_opt_level == 0 { return false; @@ -1071,9 +1071,9 @@ impl<'mir, 'tcx> MutVisitor<'tcx> for ConstPropagator<'mir, 'tcx> { fn visit_operand(&mut self, operand: &mut Operand<'tcx>, location: Location) { self.super_operand(operand, location); - // Only const prop copies and moves on `mir_opt_level=2` as doing so + // Only const prop copies and moves on `mir_opt_level=3` as doing so // currently slightly increases compile time in some cases. - if self.tcx.sess.opts.debugging_opts.mir_opt_level >= 2 { + if self.tcx.sess.mir_opt_level() >= 3 { self.propagate_operand(operand) } } @@ -1253,7 +1253,7 @@ impl<'mir, 'tcx> MutVisitor<'tcx> for ConstPropagator<'mir, 'tcx> { TerminatorKind::SwitchInt { ref mut discr, .. } => { // FIXME: This is currently redundant with `visit_operand`, but sadly // always visiting operands currently causes a perf regression in LLVM codegen, so - // `visit_operand` currently only runs for propagates places for `mir_opt_level=3`. + // `visit_operand` currently only runs for propagates places for `mir_opt_level=4`. self.propagate_operand(discr) } // None of these have Operands to const-propagate. @@ -1272,7 +1272,7 @@ impl<'mir, 'tcx> MutVisitor<'tcx> for ConstPropagator<'mir, 'tcx> { // Every argument in our function calls have already been propagated in `visit_operand`. // // NOTE: because LLVM codegen gives slight performance regressions with it, so this is - // gated on `mir_opt_level=2`. + // gated on `mir_opt_level=3`. TerminatorKind::Call { .. } => {} } diff --git a/compiler/rustc_mir/src/transform/deduplicate_blocks.rs b/compiler/rustc_mir/src/transform/deduplicate_blocks.rs index 5f09159e91b..c4b51099f53 100644 --- a/compiler/rustc_mir/src/transform/deduplicate_blocks.rs +++ b/compiler/rustc_mir/src/transform/deduplicate_blocks.rs @@ -16,7 +16,7 @@ pub struct DeduplicateBlocks; impl<'tcx> MirPass<'tcx> for DeduplicateBlocks { fn run_pass(&self, tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>) { - if tcx.sess.opts.debugging_opts.mir_opt_level < 3 { + if tcx.sess.mir_opt_level() < 4 { return; } debug!("Running DeduplicateBlocks on `{:?}`", body.source); diff --git a/compiler/rustc_mir/src/transform/dest_prop.rs b/compiler/rustc_mir/src/transform/dest_prop.rs index 46de5dba6e0..0822ab73c4c 100644 --- a/compiler/rustc_mir/src/transform/dest_prop.rs +++ b/compiler/rustc_mir/src/transform/dest_prop.rs @@ -127,9 +127,9 @@ pub struct DestinationPropagation; impl<'tcx> MirPass<'tcx> for DestinationPropagation { fn run_pass(&self, tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>) { - // Only run at mir-opt-level=2 or higher for now (we don't fix up debuginfo and remove + // Only run at mir-opt-level=3 or higher for now (we don't fix up debuginfo and remove // storage statements at the moment). - if tcx.sess.opts.debugging_opts.mir_opt_level <= 1 { + if tcx.sess.mir_opt_level() < 3 { return; } diff --git a/compiler/rustc_mir/src/transform/early_otherwise_branch.rs b/compiler/rustc_mir/src/transform/early_otherwise_branch.rs index b16a99d7f0d..821167fd9f0 100644 --- a/compiler/rustc_mir/src/transform/early_otherwise_branch.rs +++ b/compiler/rustc_mir/src/transform/early_otherwise_branch.rs @@ -26,7 +26,7 @@ pub struct EarlyOtherwiseBranch; impl<'tcx> MirPass<'tcx> for EarlyOtherwiseBranch { fn run_pass(&self, tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>) { - if tcx.sess.opts.debugging_opts.mir_opt_level < 2 { + if tcx.sess.mir_opt_level() < 3 { return; } trace!("running EarlyOtherwiseBranch on {:?}", body.source); diff --git a/compiler/rustc_mir/src/transform/inline.rs b/compiler/rustc_mir/src/transform/inline.rs index 0a899273efe..cf85503b3d5 100644 --- a/compiler/rustc_mir/src/transform/inline.rs +++ b/compiler/rustc_mir/src/transform/inline.rs @@ -52,7 +52,7 @@ crate fn is_enabled(tcx: TyCtxt<'_>) -> bool { return enabled; } - tcx.sess.opts.debugging_opts.mir_opt_level >= 2 + tcx.sess.mir_opt_level() >= 3 } impl<'tcx> MirPass<'tcx> for Inline { diff --git a/compiler/rustc_mir/src/transform/match_branches.rs b/compiler/rustc_mir/src/transform/match_branches.rs index 92b4ae397ae..e254f0553aa 100644 --- a/compiler/rustc_mir/src/transform/match_branches.rs +++ b/compiler/rustc_mir/src/transform/match_branches.rs @@ -40,7 +40,7 @@ pub struct MatchBranchSimplification; impl<'tcx> MirPass<'tcx> for MatchBranchSimplification { fn run_pass(&self, tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>) { - if tcx.sess.opts.debugging_opts.mir_opt_level <= 1 { + if tcx.sess.mir_opt_level() < 3 { return; } diff --git a/compiler/rustc_mir/src/transform/mod.rs b/compiler/rustc_mir/src/transform/mod.rs index 9cb8abf75c4..13546442f66 100644 --- a/compiler/rustc_mir/src/transform/mod.rs +++ b/compiler/rustc_mir/src/transform/mod.rs @@ -475,7 +475,7 @@ fn run_post_borrowck_cleanup_passes<'tcx>(tcx: TyCtxt<'tcx>, body: &mut Body<'tc } fn run_optimization_passes<'tcx>(tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>) { - let mir_opt_level = tcx.sess.opts.debugging_opts.mir_opt_level; + let mir_opt_level = tcx.sess.mir_opt_level(); // Lowering generator control-flow and variables has to happen before we do anything else // to them. We run some optimizations before that, because they may be harder to do on the state diff --git a/compiler/rustc_mir/src/transform/multiple_return_terminators.rs b/compiler/rustc_mir/src/transform/multiple_return_terminators.rs index 617086622cc..4aaa0baa9f4 100644 --- a/compiler/rustc_mir/src/transform/multiple_return_terminators.rs +++ b/compiler/rustc_mir/src/transform/multiple_return_terminators.rs @@ -10,7 +10,7 @@ pub struct MultipleReturnTerminators; impl<'tcx> MirPass<'tcx> for MultipleReturnTerminators { fn run_pass(&self, tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>) { - if tcx.sess.opts.debugging_opts.mir_opt_level < 3 { + if tcx.sess.mir_opt_level() < 4 { return; } diff --git a/compiler/rustc_mir/src/transform/nrvo.rs b/compiler/rustc_mir/src/transform/nrvo.rs index ce02fb261df..445dc12909c 100644 --- a/compiler/rustc_mir/src/transform/nrvo.rs +++ b/compiler/rustc_mir/src/transform/nrvo.rs @@ -34,7 +34,7 @@ pub struct RenameReturnPlace; impl<'tcx> MirPass<'tcx> for RenameReturnPlace { fn run_pass(&self, tcx: TyCtxt<'tcx>, body: &mut mir::Body<'tcx>) { - if tcx.sess.opts.debugging_opts.mir_opt_level == 0 { + if tcx.sess.mir_opt_level() == 0 { return; } diff --git a/compiler/rustc_mir/src/transform/unreachable_prop.rs b/compiler/rustc_mir/src/transform/unreachable_prop.rs index e39c8656021..658c6b6e9db 100644 --- a/compiler/rustc_mir/src/transform/unreachable_prop.rs +++ b/compiler/rustc_mir/src/transform/unreachable_prop.rs @@ -12,8 +12,8 @@ pub struct UnreachablePropagation; impl MirPass<'_> for UnreachablePropagation { fn run_pass<'tcx>(&self, tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>) { - if tcx.sess.opts.debugging_opts.mir_opt_level < 3 { - // Enable only under -Zmir-opt-level=3 as in some cases (check the deeply-nested-opt + if tcx.sess.mir_opt_level() < 4 { + // Enable only under -Zmir-opt-level=4 as in some cases (check the deeply-nested-opt // perf benchmark) LLVM may spend quite a lot of time optimizing the generated code. return; } diff --git a/compiler/rustc_session/src/config.rs b/compiler/rustc_session/src/config.rs index 77a9a2b227c..f25828e2161 100644 --- a/compiler/rustc_session/src/config.rs +++ b/compiler/rustc_session/src/config.rs @@ -1938,21 +1938,23 @@ pub fn build_session_options(matches: &getopts::Matches) -> Options { Some(SymbolManglingVersion::V0) => {} } - if debugging_opts.mir_opt_level > 1 { - // Functions inlined during MIR transform can, at best, make it impossible to - // effectively cover inlined functions, and, at worst, break coverage map generation - // during LLVM codegen. For example, function counter IDs are only unique within a - // function. Inlining after these counters are injected can produce duplicate counters, - // resulting in an invalid coverage map (and ICE); so this option combination is not - // allowed. - early_warn( - error_format, - &format!( - "`-Z mir-opt-level={}` (or any level > 1) enables function inlining, which \ + if let Some(mir_opt_level) = debugging_opts.mir_opt_level { + if mir_opt_level > 1 { + // Functions inlined during MIR transform can, at best, make it impossible to + // effectively cover inlined functions, and, at worst, break coverage map generation + // during LLVM codegen. For example, function counter IDs are only unique within a + // function. Inlining after these counters are injected can produce duplicate counters, + // resulting in an invalid coverage map (and ICE); so this option combination is not + // allowed. + early_warn( + error_format, + &format!( + "`-Z mir-opt-level={}` (or any level > 1) enables function inlining, which \ is incompatible with `-Z instrument-coverage`. Inlining will be disabled.", - debugging_opts.mir_opt_level, - ), - ); + mir_opt_level, + ), + ); + } } } diff --git a/compiler/rustc_session/src/options.rs b/compiler/rustc_session/src/options.rs index 6e7d39547a1..79bbad8307b 100644 --- a/compiler/rustc_session/src/options.rs +++ b/compiler/rustc_session/src/options.rs @@ -999,8 +999,8 @@ options! {DebuggingOptions, DebuggingSetter, basic_debugging_options, mir_emit_retag: bool = (false, parse_bool, [TRACKED], "emit Retagging MIR statements, interpreted e.g., by miri; implies -Zmir-opt-level=0 \ (default: no)"), - mir_opt_level: usize = (1, parse_uint, [TRACKED], - "MIR optimization level (0-3; default: 1)"), + mir_opt_level: Option<usize> = (None, parse_opt_uint, [TRACKED], + "MIR optimization level (0-4; default: 1 in non optimized builds and 2 in optimized builds)"), mutable_noalias: bool = (false, parse_bool, [TRACKED], "emit noalias metadata for mutable references (default: no)"), new_llvm_pass_manager: bool = (false, parse_bool, [TRACKED], diff --git a/compiler/rustc_session/src/session.rs b/compiler/rustc_session/src/session.rs index 493bbb3a762..963df0fb4d7 100644 --- a/compiler/rustc_session/src/session.rs +++ b/compiler/rustc_session/src/session.rs @@ -640,6 +640,12 @@ impl Session { pub fn binary_dep_depinfo(&self) -> bool { self.opts.debugging_opts.binary_dep_depinfo } + pub fn mir_opt_level(&self) -> usize { + self.opts + .debugging_opts + .mir_opt_level + .unwrap_or_else(|| if self.opts.optimize != config::OptLevel::No { 2 } else { 1 }) + } /// Gets the features enabled for the current compilation session. /// DO NOT USE THIS METHOD if there is a TyCtxt available, as it circumvents diff --git a/src/test/codegen/issue-59352.rs b/src/test/codegen/issue-59352.rs index 28bb8591232..d271fe027e3 100644 --- a/src/test/codegen/issue-59352.rs +++ b/src/test/codegen/issue-59352.rs @@ -5,8 +5,8 @@ // Once the optimizer can do that, mir-opt/issues/issue-59352.rs will need to be updated and this // test case should be removed as it will become redundant. -// mir-opt-level=2 enables inlining and enables LLVM to optimize away the unreachable panic call. -// compile-flags: -O -Z mir-opt-level=2 +// mir-opt-level=3 enables inlining and enables LLVM to optimize away the unreachable panic call. +// compile-flags: -O -Z mir-opt-level=3 #![crate_type = "rlib"] diff --git a/src/test/codegen/naked-noinline.rs b/src/test/codegen/naked-noinline.rs index 2a2208d4fce..d9e6f6c34ec 100644 --- a/src/test/codegen/naked-noinline.rs +++ b/src/test/codegen/naked-noinline.rs @@ -1,5 +1,5 @@ // Checks that naked functions are never inlined. -// compile-flags: -O -Zmir-opt-level=2 +// compile-flags: -O -Zmir-opt-level=3 // ignore-wasm32 #![crate_type = "lib"] #![feature(asm)] diff --git a/src/test/codegen/sanitizer-no-sanitize-inlining.rs b/src/test/codegen/sanitizer-no-sanitize-inlining.rs index be0547afa4c..f4af60baefe 100644 --- a/src/test/codegen/sanitizer-no-sanitize-inlining.rs +++ b/src/test/codegen/sanitizer-no-sanitize-inlining.rs @@ -4,8 +4,8 @@ // needs-sanitizer-address // needs-sanitizer-leak // revisions: ASAN LSAN -//[ASAN] compile-flags: -Zsanitizer=address -C opt-level=3 -Z mir-opt-level=3 -//[LSAN] compile-flags: -Zsanitizer=leak -C opt-level=3 -Z mir-opt-level=3 +//[ASAN] compile-flags: -Zsanitizer=address -C opt-level=3 -Z mir-opt-level=4 +//[LSAN] compile-flags: -Zsanitizer=leak -C opt-level=3 -Z mir-opt-level=4 #![crate_type="lib"] #![feature(no_sanitize)] diff --git a/src/test/codegen/try_identity.rs b/src/test/codegen/try_identity.rs index d51bd575719..81e2435e5b8 100644 --- a/src/test/codegen/try_identity.rs +++ b/src/test/codegen/try_identity.rs @@ -1,4 +1,4 @@ -// compile-flags: -C no-prepopulate-passes -O -Z mir-opt-level=2 -Zunsound-mir-opts +// compile-flags: -C no-prepopulate-passes -O -Z mir-opt-level=3 -Zunsound-mir-opts // Ensure that `x?` has no overhead on `Result<T, E>` due to identity `match`es in lowering. // This requires inlining to trigger the MIR optimizations in `SimplifyArmIdentity`. diff --git a/src/test/mir-opt/const_prop/boolean_identities.rs b/src/test/mir-opt/const_prop/boolean_identities.rs index 6dae07dfbd1..57164e3e794 100644 --- a/src/test/mir-opt/const_prop/boolean_identities.rs +++ b/src/test/mir-opt/const_prop/boolean_identities.rs @@ -1,4 +1,4 @@ -// compile-flags: -O -Zmir-opt-level=3 +// compile-flags: -O -Zmir-opt-level=4 // EMIT_MIR boolean_identities.test.ConstProp.diff pub fn test(x: bool, y: bool) -> bool { diff --git a/src/test/mir-opt/const_prop/issue-66971.rs b/src/test/mir-opt/const_prop/issue-66971.rs index 986177b5c0a..81eccae46b9 100644 --- a/src/test/mir-opt/const_prop/issue-66971.rs +++ b/src/test/mir-opt/const_prop/issue-66971.rs @@ -1,4 +1,4 @@ -// compile-flags: -Z mir-opt-level=2 +// compile-flags: -Z mir-opt-level=3 // Due to a bug in propagating scalar pairs the assertion below used to fail. In the expected // outputs below, after ConstProp this is how _2 would look like with the bug: diff --git a/src/test/mir-opt/const_prop/issue-67019.rs b/src/test/mir-opt/const_prop/issue-67019.rs index d277bd5869c..c78b8b97178 100644 --- a/src/test/mir-opt/const_prop/issue-67019.rs +++ b/src/test/mir-opt/const_prop/issue-67019.rs @@ -1,4 +1,4 @@ -// compile-flags: -Z mir-opt-level=2 +// compile-flags: -Z mir-opt-level=3 // This used to ICE in const-prop diff --git a/src/test/mir-opt/const_prop/mult_by_zero.rs b/src/test/mir-opt/const_prop/mult_by_zero.rs index 1cb50155b5e..b0ecdf1818e 100644 --- a/src/test/mir-opt/const_prop/mult_by_zero.rs +++ b/src/test/mir-opt/const_prop/mult_by_zero.rs @@ -1,4 +1,4 @@ -// compile-flags: -O -Zmir-opt-level=3 +// compile-flags: -O -Zmir-opt-level=4 // EMIT_MIR mult_by_zero.test.ConstProp.diff fn test(x : i32) -> i32 { diff --git a/src/test/mir-opt/early_otherwise_branch.rs b/src/test/mir-opt/early_otherwise_branch.rs index 77003442080..548213ab83c 100644 --- a/src/test/mir-opt/early_otherwise_branch.rs +++ b/src/test/mir-opt/early_otherwise_branch.rs @@ -1,4 +1,4 @@ -// compile-flags: -Z mir-opt-level=3 +// compile-flags: -Z mir-opt-level=4 // EMIT_MIR early_otherwise_branch.opt1.EarlyOtherwiseBranch.diff fn opt1(x: Option<u32>, y: Option<u32>) -> u32 { match (x, y) { diff --git a/src/test/mir-opt/early_otherwise_branch_3_element_tuple.rs b/src/test/mir-opt/early_otherwise_branch_3_element_tuple.rs index 1d6877d67df..aa304f747f7 100644 --- a/src/test/mir-opt/early_otherwise_branch_3_element_tuple.rs +++ b/src/test/mir-opt/early_otherwise_branch_3_element_tuple.rs @@ -1,4 +1,4 @@ -// compile-flags: -Z mir-opt-level=3 +// compile-flags: -Z mir-opt-level=4 // EMIT_MIR early_otherwise_branch_3_element_tuple.opt1.EarlyOtherwiseBranch.diff fn opt1(x: Option<u32>, y: Option<u32>, z: Option<u32>) -> u32 { diff --git a/src/test/mir-opt/early_otherwise_branch_68867.rs b/src/test/mir-opt/early_otherwise_branch_68867.rs index b822c58f550..e11337643da 100644 --- a/src/test/mir-opt/early_otherwise_branch_68867.rs +++ b/src/test/mir-opt/early_otherwise_branch_68867.rs @@ -1,5 +1,5 @@ // ignore-tidy-linelength -// compile-flags: -Z mir-opt-level=3 -Zunsound-mir-opts +// compile-flags: -Z mir-opt-level=4 -Zunsound-mir-opts // example from #68867 type CSSFloat = f32; diff --git a/src/test/mir-opt/early_otherwise_branch_noopt.rs b/src/test/mir-opt/early_otherwise_branch_noopt.rs index bd15f520dfc..aa9ddf485b5 100644 --- a/src/test/mir-opt/early_otherwise_branch_noopt.rs +++ b/src/test/mir-opt/early_otherwise_branch_noopt.rs @@ -1,4 +1,4 @@ -// compile-flags: -Z mir-opt-level=3 +// compile-flags: -Z mir-opt-level=4 // must not optimize as it does not follow the pattern of // left and right hand side being the same variant diff --git a/src/test/mir-opt/inline/inline-into-box-place.rs b/src/test/mir-opt/inline/inline-into-box-place.rs index 57298605b18..049a97816f6 100644 --- a/src/test/mir-opt/inline/inline-into-box-place.rs +++ b/src/test/mir-opt/inline/inline-into-box-place.rs @@ -1,6 +1,6 @@ // ignore-endian-big // ignore-wasm32-bare compiled with panic=abort by default -// compile-flags: -Z mir-opt-level=3 +// compile-flags: -Z mir-opt-level=4 // EMIT_MIR_FOR_EACH_BIT_WIDTH #![feature(box_syntax)] // EMIT_MIR inline_into_box_place.main.Inline.diff diff --git a/src/test/mir-opt/inline/inline-trait-method_2.rs b/src/test/mir-opt/inline/inline-trait-method_2.rs index 6e5de8315a1..378e71a2567 100644 --- a/src/test/mir-opt/inline/inline-trait-method_2.rs +++ b/src/test/mir-opt/inline/inline-trait-method_2.rs @@ -1,4 +1,4 @@ -// compile-flags: -Z span_free_formats -Z mir-opt-level=3 +// compile-flags: -Z span_free_formats -Z mir-opt-level=4 // EMIT_MIR inline_trait_method_2.test2.Inline.after.mir fn test2(x: &dyn X) -> bool { diff --git a/src/test/mir-opt/issues/issue-59352.rs b/src/test/mir-opt/issues/issue-59352.rs index 9e59337a01d..1e0045555ab 100644 --- a/src/test/mir-opt/issues/issue-59352.rs +++ b/src/test/mir-opt/issues/issue-59352.rs @@ -7,7 +7,7 @@ // removed. // EMIT_MIR issue_59352.num_to_digit.PreCodegen.after.mir -// compile-flags: -Z mir-opt-level=2 -Z span_free_formats +// compile-flags: -Z mir-opt-level=3 -Z span_free_formats pub fn num_to_digit(num: char) -> u32 { // CHECK-NOT: panic diff --git a/src/test/mir-opt/multiple_return_terminators.rs b/src/test/mir-opt/multiple_return_terminators.rs index b73a51d4835..a2b902d1483 100644 --- a/src/test/mir-opt/multiple_return_terminators.rs +++ b/src/test/mir-opt/multiple_return_terminators.rs @@ -1,4 +1,4 @@ -// compile-flags: -Z mir-opt-level=3 +// compile-flags: -Z mir-opt-level=4 // EMIT_MIR multiple_return_terminators.test.MultipleReturnTerminators.diff fn test(x: bool) { diff --git a/src/test/mir-opt/simplify-arm-identity.rs b/src/test/mir-opt/simplify-arm-identity.rs index 0a59032e87b..bedc86bbacb 100644 --- a/src/test/mir-opt/simplify-arm-identity.rs +++ b/src/test/mir-opt/simplify-arm-identity.rs @@ -1,7 +1,7 @@ // Checks that `SimplifyArmIdentity` is not applied if enums have incompatible layouts. // Regression test for issue #66856. // -// compile-flags: -Zmir-opt-level=2 +// compile-flags: -Zmir-opt-level=3 // EMIT_MIR_FOR_EACH_BIT_WIDTH enum Src { diff --git a/src/test/mir-opt/simplify-arm.rs b/src/test/mir-opt/simplify-arm.rs index a7df786357b..50b5147e0cf 100644 --- a/src/test/mir-opt/simplify-arm.rs +++ b/src/test/mir-opt/simplify-arm.rs @@ -1,4 +1,4 @@ -// compile-flags: -Z mir-opt-level=2 -Zunsound-mir-opts +// compile-flags: -Z mir-opt-level=3 -Zunsound-mir-opts // EMIT_MIR simplify_arm.id.SimplifyArmIdentity.diff // EMIT_MIR simplify_arm.id.SimplifyBranchSame.diff // EMIT_MIR simplify_arm.id_result.SimplifyArmIdentity.diff diff --git a/src/test/ui/const-generics/issues/issue-75299.rs b/src/test/ui/const-generics/issues/issue-75299.rs index 23f30a1eea0..9d3f25b3b47 100644 --- a/src/test/ui/const-generics/issues/issue-75299.rs +++ b/src/test/ui/const-generics/issues/issue-75299.rs @@ -1,4 +1,4 @@ -// compile-flags: -Zmir-opt-level=3 +// compile-flags: -Zmir-opt-level=4 // run-pass #![feature(const_generics)] diff --git a/src/test/ui/const_prop/inline_spans.rs b/src/test/ui/const_prop/inline_spans.rs index 32902b49d02..adc7874104a 100644 --- a/src/test/ui/const_prop/inline_spans.rs +++ b/src/test/ui/const_prop/inline_spans.rs @@ -1,5 +1,5 @@ // build-fail -// compile-flags: -Zmir-opt-level=2 +// compile-flags: -Zmir-opt-level=3 #![deny(warnings)] diff --git a/src/test/ui/const_prop/inline_spans_lint_attribute.rs b/src/test/ui/const_prop/inline_spans_lint_attribute.rs index 656ff02dc67..1db53d77193 100644 --- a/src/test/ui/const_prop/inline_spans_lint_attribute.rs +++ b/src/test/ui/const_prop/inline_spans_lint_attribute.rs @@ -1,6 +1,6 @@ // Must be build-pass, because check-pass will not run const prop and thus not emit the lint anyway. // build-pass -// compile-flags: -Zmir-opt-level=2 +// compile-flags: -Zmir-opt-level=3 #![deny(warnings)] diff --git a/src/test/ui/consts/issue-66345.rs b/src/test/ui/consts/issue-66345.rs index 7d0de73007c..4971d96476f 100644 --- a/src/test/ui/consts/issue-66345.rs +++ b/src/test/ui/consts/issue-66345.rs @@ -1,8 +1,8 @@ // run-pass -// compile-flags: -Z mir-opt-level=3 +// compile-flags: -Z mir-opt-level=4 // Checks that the compiler does not ICE when passing references to field of by-value struct -// with -Z mir-opt-level=3 +// with -Z mir-opt-level=4 fn do_nothing(_: &()) {} diff --git a/src/test/ui/consts/issue-67529.rs b/src/test/ui/consts/issue-67529.rs index df4bc668bee..dd24c2d27e2 100644 --- a/src/test/ui/consts/issue-67529.rs +++ b/src/test/ui/consts/issue-67529.rs @@ -1,4 +1,4 @@ -// compile-flags: -Z mir-opt-level=2 +// compile-flags: -Z mir-opt-level=3 // run-pass struct Baz<T: ?Sized> { diff --git a/src/test/ui/consts/issue-67640.rs b/src/test/ui/consts/issue-67640.rs index bc0ee8d386f..4c71a2e0224 100644 --- a/src/test/ui/consts/issue-67640.rs +++ b/src/test/ui/consts/issue-67640.rs @@ -1,4 +1,4 @@ -// compile-flags: -Z mir-opt-level=3 +// compile-flags: -Z mir-opt-level=4 // run-pass struct X { diff --git a/src/test/ui/consts/issue-67641.rs b/src/test/ui/consts/issue-67641.rs index f50fba287a2..e5a74f15654 100644 --- a/src/test/ui/consts/issue-67641.rs +++ b/src/test/ui/consts/issue-67641.rs @@ -1,4 +1,4 @@ -// compile-flags: -Z mir-opt-level=2 +// compile-flags: -Z mir-opt-level=3 // run-pass use std::cell::Cell; diff --git a/src/test/ui/consts/issue-67862.rs b/src/test/ui/consts/issue-67862.rs index 84f72154d26..b9e96a87f14 100644 --- a/src/test/ui/consts/issue-67862.rs +++ b/src/test/ui/consts/issue-67862.rs @@ -1,4 +1,4 @@ -// compile-flags: -Z mir-opt-level=2 +// compile-flags: -Z mir-opt-level=3 // run-pass fn e220() -> (i64, i64) { diff --git a/src/test/ui/consts/trait_specialization.rs b/src/test/ui/consts/trait_specialization.rs index 3adbbb53046..c581ef6b0f7 100644 --- a/src/test/ui/consts/trait_specialization.rs +++ b/src/test/ui/consts/trait_specialization.rs @@ -1,5 +1,5 @@ // ignore-wasm32-bare which doesn't support `std::process:exit()` -// compile-flags: -Zmir-opt-level=2 +// compile-flags: -Zmir-opt-level=3 // run-pass // Tests that specialization does not cause optimizations running on polymorphic MIR to resolve diff --git a/src/test/ui/dest-prop/skeptic-miscompile.rs b/src/test/ui/dest-prop/skeptic-miscompile.rs index c27a1f04532..4bb61dbc7f4 100644 --- a/src/test/ui/dest-prop/skeptic-miscompile.rs +++ b/src/test/ui/dest-prop/skeptic-miscompile.rs @@ -1,6 +1,6 @@ // run-pass -// compile-flags: -Zmir-opt-level=2 +// compile-flags: -Zmir-opt-level=3 trait IterExt: Iterator { fn fold_ex<B, F>(mut self, init: B, mut f: F) -> B diff --git a/src/test/ui/issues/issue-50411.rs b/src/test/ui/issues/issue-50411.rs index 1bf12707817..cd728b15256 100644 --- a/src/test/ui/issues/issue-50411.rs +++ b/src/test/ui/issues/issue-50411.rs @@ -3,7 +3,7 @@ // elaborate-drops invoked on it) and then try to elaboate drops a // second time. Uncool. -// compile-flags:-Zmir-opt-level=3 +// compile-flags:-Zmir-opt-level=4 // build-pass fn main() { diff --git a/src/test/ui/issues/issue-50865-private-impl-trait/auxiliary/lib.rs b/src/test/ui/issues/issue-50865-private-impl-trait/auxiliary/lib.rs index fb4bf2b8b44..1e20a546069 100644 --- a/src/test/ui/issues/issue-50865-private-impl-trait/auxiliary/lib.rs +++ b/src/test/ui/issues/issue-50865-private-impl-trait/auxiliary/lib.rs @@ -1,5 +1,5 @@ // revisions: default miropt -//[miropt]compile-flags: -Z mir-opt-level=2 +//[miropt]compile-flags: -Z mir-opt-level=3 // ~^ This flag is for #77668, it used to be ICE. #![crate_type = "lib"] diff --git a/src/test/ui/issues/issue-77002.rs b/src/test/ui/issues/issue-77002.rs index c7dd3cf8109..0c37346eaf8 100644 --- a/src/test/ui/issues/issue-77002.rs +++ b/src/test/ui/issues/issue-77002.rs @@ -1,4 +1,4 @@ -// compile-flags: -Zmir-opt-level=2 -Copt-level=0 +// compile-flags: -Zmir-opt-level=3 -Copt-level=0 // run-pass type M = [i64; 2]; diff --git a/src/test/ui/mir/auxiliary/issue_76375_aux.rs b/src/test/ui/mir/auxiliary/issue_76375_aux.rs index 72f32ecf7ea..90f4df739f1 100644 --- a/src/test/ui/mir/auxiliary/issue_76375_aux.rs +++ b/src/test/ui/mir/auxiliary/issue_76375_aux.rs @@ -1,5 +1,5 @@ // edition:2018 -// compile-flags: -Z mir-opt-level=2 +// compile-flags: -Z mir-opt-level=3 #[inline(always)] pub fn copy_prop(s: bool) -> String { diff --git a/src/test/ui/mir/issue-66851.rs b/src/test/ui/mir/issue-66851.rs index 72d62a30a33..878ad4e475a 100644 --- a/src/test/ui/mir/issue-66851.rs +++ b/src/test/ui/mir/issue-66851.rs @@ -2,7 +2,7 @@ // did not check that the types matched up in the `Ok(r)` branch. // // run-pass -// compile-flags: -Zmir-opt-level=2 +// compile-flags: -Zmir-opt-level=3 #[derive(Debug, PartialEq, Eq)] enum SpecialsRes { Res(u64) } diff --git a/src/test/ui/mir/issue-67639-normalization-ice.rs b/src/test/ui/mir/issue-67639-normalization-ice.rs index 21851a72525..71150a80bc0 100644 --- a/src/test/ui/mir/issue-67639-normalization-ice.rs +++ b/src/test/ui/mir/issue-67639-normalization-ice.rs @@ -1,4 +1,4 @@ -// compile-flags: -Z mir-opt-level=3 +// compile-flags: -Z mir-opt-level=4 // build-pass // This used to ICE in const-prop due diff --git a/src/test/ui/mir/issue-67710-inline-projection.rs b/src/test/ui/mir/issue-67710-inline-projection.rs index 37d8f2eac9b..1ff6b4d628c 100644 --- a/src/test/ui/mir/issue-67710-inline-projection.rs +++ b/src/test/ui/mir/issue-67710-inline-projection.rs @@ -1,4 +1,4 @@ -// compile-flags: -Z mir-opt-level=2 +// compile-flags: -Z mir-opt-level=3 // build-pass // This used to ICE due to the inling pass not examining projections diff --git a/src/test/ui/mir/issue-68841.rs b/src/test/ui/mir/issue-68841.rs index 14884a97fab..550bd452a80 100644 --- a/src/test/ui/mir/issue-68841.rs +++ b/src/test/ui/mir/issue-68841.rs @@ -1,4 +1,4 @@ -// compile-flags: -Z mir-opt-level=2 +// compile-flags: -Z mir-opt-level=3 // edition:2018 // build-pass diff --git a/src/test/ui/mir/issue-71793-inline-args-storage.rs b/src/test/ui/mir/issue-71793-inline-args-storage.rs index 87b2806d4e2..18f2e38d14c 100644 --- a/src/test/ui/mir/issue-71793-inline-args-storage.rs +++ b/src/test/ui/mir/issue-71793-inline-args-storage.rs @@ -4,7 +4,7 @@ // // check-pass // edition:2018 -// compile-args: -Zmir-opt-level=2 +// compile-args: -Zmir-opt-level=3 #![crate_type = "lib"] diff --git a/src/test/ui/mir/issue-75053.rs b/src/test/ui/mir/issue-75053.rs index 6e7211c2ee6..d54e23169c4 100644 --- a/src/test/ui/mir/issue-75053.rs +++ b/src/test/ui/mir/issue-75053.rs @@ -1,4 +1,4 @@ -// compile-flags: -Z mir-opt-level=2 +// compile-flags: -Z mir-opt-level=3 // build-pass #![feature(type_alias_impl_trait)] diff --git a/src/test/ui/mir/issue-76248.rs b/src/test/ui/mir/issue-76248.rs index b01a9727852..18473e79e86 100644 --- a/src/test/ui/mir/issue-76248.rs +++ b/src/test/ui/mir/issue-76248.rs @@ -3,7 +3,7 @@ // Regression test for #76248. // // build-pass -// compile-flags: -Zmir-opt-level=2 +// compile-flags: -Zmir-opt-level=3 const N: usize = 1; diff --git a/src/test/ui/mir/issue-76375.rs b/src/test/ui/mir/issue-76375.rs index a7772cb1fe6..e635caca9fd 100644 --- a/src/test/ui/mir/issue-76375.rs +++ b/src/test/ui/mir/issue-76375.rs @@ -2,7 +2,7 @@ // // edition:2018 // build-pass -// compile-flags: -Z mir-opt-level=2 +// compile-flags: -Z mir-opt-level=3 // aux-build:issue_76375_aux.rs #![crate_type = "lib"] diff --git a/src/test/ui/mir/issue-76740-copy-propagation.rs b/src/test/ui/mir/issue-76740-copy-propagation.rs index 90999a3e556..1d4ec11762a 100644 --- a/src/test/ui/mir/issue-76740-copy-propagation.rs +++ b/src/test/ui/mir/issue-76740-copy-propagation.rs @@ -1,6 +1,6 @@ // Regression test for issue #76740. // run-pass -// compile-flags: -Zmir-opt-level=3 +// compile-flags: -Zmir-opt-level=4 #[derive(Copy, Clone)] pub struct V([usize; 4]); diff --git a/src/test/ui/mir/issue-77911.rs b/src/test/ui/mir/issue-77911.rs index fff303495e7..acf4c20542d 100644 --- a/src/test/ui/mir/issue-77911.rs +++ b/src/test/ui/mir/issue-77911.rs @@ -1,4 +1,4 @@ -// compile-flags: -Z mir-opt-level=2 +// compile-flags: -Z mir-opt-level=3 // build-pass use std::fs::File; diff --git a/src/test/ui/mir/issue-78496.rs b/src/test/ui/mir/issue-78496.rs index 1b0687cfac3..a0d1f5a780e 100644 --- a/src/test/ui/mir/issue-78496.rs +++ b/src/test/ui/mir/issue-78496.rs @@ -1,5 +1,5 @@ // run-pass -// compile-flags: -Z mir-opt-level=2 -C opt-level=0 +// compile-flags: -Z mir-opt-level=3 -C opt-level=0 // example from #78496 pub enum E<'a> { diff --git a/src/test/ui/mir/issue66339.rs b/src/test/ui/mir/issue66339.rs index 98e178c0551..2507af38cdf 100644 --- a/src/test/ui/mir/issue66339.rs +++ b/src/test/ui/mir/issue66339.rs @@ -1,4 +1,4 @@ -// compile-flags: -Z mir-opt-level=2 +// compile-flags: -Z mir-opt-level=3 // build-pass // This used to ICE in const-prop diff --git a/src/test/ui/mir/mir-inlining/array-clone-with-generic-size.rs b/src/test/ui/mir/mir-inlining/array-clone-with-generic-size.rs index eec0a4599c3..e36e8bd746d 100644 --- a/src/test/ui/mir/mir-inlining/array-clone-with-generic-size.rs +++ b/src/test/ui/mir/mir-inlining/array-clone-with-generic-size.rs @@ -2,7 +2,7 @@ // Regression test for issue #79269. // // build-pass -// compile-flags: -Zmir-opt-level=2 -Zvalidate-mir +// compile-flags: -Zmir-opt-level=3 -Zvalidate-mir #[derive(Clone)] struct Array<T, const N: usize>([T; N]); diff --git a/src/test/ui/mir/mir-inlining/ice-issue-45493.rs b/src/test/ui/mir/mir-inlining/ice-issue-45493.rs index 1bd16dc43e1..04a23212e7b 100644 --- a/src/test/ui/mir/mir-inlining/ice-issue-45493.rs +++ b/src/test/ui/mir/mir-inlining/ice-issue-45493.rs @@ -1,5 +1,5 @@ // run-pass -// compile-flags:-Zmir-opt-level=2 +// compile-flags:-Zmir-opt-level=3 trait Array { type Item; diff --git a/src/test/ui/mir/mir-inlining/ice-issue-45885.rs b/src/test/ui/mir/mir-inlining/ice-issue-45885.rs index e930a4d1ccd..09b1279ef34 100644 --- a/src/test/ui/mir/mir-inlining/ice-issue-45885.rs +++ b/src/test/ui/mir/mir-inlining/ice-issue-45885.rs @@ -1,5 +1,5 @@ // run-pass -// compile-flags:-Zmir-opt-level=2 +// compile-flags:-Zmir-opt-level=3 pub enum Enum { A, diff --git a/src/test/ui/mir/mir-inlining/ice-issue-68347.rs b/src/test/ui/mir/mir-inlining/ice-issue-68347.rs index 88b80bc3333..7c135250940 100644 --- a/src/test/ui/mir/mir-inlining/ice-issue-68347.rs +++ b/src/test/ui/mir/mir-inlining/ice-issue-68347.rs @@ -1,5 +1,5 @@ // run-pass -// compile-flags:-Zmir-opt-level=2 +// compile-flags:-Zmir-opt-level=3 pub fn main() { let _x: fn() = handle_debug_column; } diff --git a/src/test/ui/mir/mir-inlining/ice-issue-77306-1.rs b/src/test/ui/mir/mir-inlining/ice-issue-77306-1.rs index 4d083bf2321..ef05ff9ce03 100644 --- a/src/test/ui/mir/mir-inlining/ice-issue-77306-1.rs +++ b/src/test/ui/mir/mir-inlining/ice-issue-77306-1.rs @@ -1,5 +1,5 @@ // run-pass -// compile-flags:-Zmir-opt-level=2 +// compile-flags:-Zmir-opt-level=3 // Previously ICEd because we did not normalize during inlining, // see https://github.com/rust-lang/rust/pull/77306 for more discussion. diff --git a/src/test/ui/mir/mir-inlining/ice-issue-77306-2.rs b/src/test/ui/mir/mir-inlining/ice-issue-77306-2.rs index a346d450586..cb208401313 100644 --- a/src/test/ui/mir/mir-inlining/ice-issue-77306-2.rs +++ b/src/test/ui/mir/mir-inlining/ice-issue-77306-2.rs @@ -1,5 +1,5 @@ // run-pass -// compile-flags:-Zmir-opt-level=2 +// compile-flags:-Zmir-opt-level=3 struct Cursor {} struct TokenTree {} diff --git a/src/test/ui/mir/mir-inlining/ice-issue-77564.rs b/src/test/ui/mir/mir-inlining/ice-issue-77564.rs index 262402df2cc..0d3fbfe5d1a 100644 --- a/src/test/ui/mir/mir-inlining/ice-issue-77564.rs +++ b/src/test/ui/mir/mir-inlining/ice-issue-77564.rs @@ -1,5 +1,5 @@ // run-pass -// compile-flags:-Zmir-opt-level=2 +// compile-flags:-Zmir-opt-level=3 use std::mem::MaybeUninit; const N: usize = 2; diff --git a/src/test/ui/mir/mir-inlining/inline-instrument-coverage-fail.rs b/src/test/ui/mir/mir-inlining/inline-instrument-coverage-fail.rs index 2437155d981..8ed7f25d2bb 100644 --- a/src/test/ui/mir/mir-inlining/inline-instrument-coverage-fail.rs +++ b/src/test/ui/mir/mir-inlining/inline-instrument-coverage-fail.rs @@ -1,9 +1,9 @@ -// Ensures -Zmir-opt-level=2 (specifically, inlining) is not allowed with -Zinstrument-coverage. +// Ensures -Zmir-opt-level=3 (specifically, inlining) is not allowed with -Zinstrument-coverage. // Regression test for issue #80060. // // needs-profiler-support // build-pass -// compile-flags: -Zmir-opt-level=2 -Zinstrument-coverage +// compile-flags: -Zmir-opt-level=3 -Zinstrument-coverage #[inline(never)] fn foo() {} diff --git a/src/test/ui/mir/mir-inlining/inline-instrument-coverage-fail.stderr b/src/test/ui/mir/mir-inlining/inline-instrument-coverage-fail.stderr index eb50e5075ca..d482afc395d 100644 --- a/src/test/ui/mir/mir-inlining/inline-instrument-coverage-fail.stderr +++ b/src/test/ui/mir/mir-inlining/inline-instrument-coverage-fail.stderr @@ -1,2 +1,2 @@ -warning: `-Z mir-opt-level=2` (or any level > 1) enables function inlining, which is incompatible with `-Z instrument-coverage`. Inlining will be disabled. +warning: `-Z mir-opt-level=3` (or any level > 1) enables function inlining, which is incompatible with `-Z instrument-coverage`. Inlining will be disabled. diff --git a/src/test/ui/mir/mir-inlining/no-trait-method-issue-40473.rs b/src/test/ui/mir/mir-inlining/no-trait-method-issue-40473.rs index 8f570dbd4ad..8b3cb703dc0 100644 --- a/src/test/ui/mir/mir-inlining/no-trait-method-issue-40473.rs +++ b/src/test/ui/mir/mir-inlining/no-trait-method-issue-40473.rs @@ -1,5 +1,5 @@ // run-pass -// compile-flags:-Zmir-opt-level=2 +// compile-flags:-Zmir-opt-level=3 pub trait Foo { fn bar(&self) -> usize { 2 } } diff --git a/src/test/ui/mir/mir-inlining/var-debuginfo-issue-67586.rs b/src/test/ui/mir/mir-inlining/var-debuginfo-issue-67586.rs index 23cc114880c..e2620682679 100644 --- a/src/test/ui/mir/mir-inlining/var-debuginfo-issue-67586.rs +++ b/src/test/ui/mir/mir-inlining/var-debuginfo-issue-67586.rs @@ -1,5 +1,5 @@ // run-pass -// compile-flags: -Z mir-opt-level=2 -C opt-level=0 -C debuginfo=2 +// compile-flags: -Z mir-opt-level=3 -C opt-level=0 -C debuginfo=2 #[inline(never)] pub fn foo(bar: usize) -> usize { diff --git a/src/test/ui/mir/mir_const_prop_tuple_field_reorder.rs b/src/test/ui/mir/mir_const_prop_tuple_field_reorder.rs index 629b50dec65..b66a85d07d3 100644 --- a/src/test/ui/mir/mir_const_prop_tuple_field_reorder.rs +++ b/src/test/ui/mir/mir_const_prop_tuple_field_reorder.rs @@ -1,4 +1,4 @@ -// compile-flags: -Z mir-opt-level=2 +// compile-flags: -Z mir-opt-level=3 // build-pass #![crate_type="lib"] diff --git a/src/test/ui/mir/ssa-analysis-regression-50041.rs b/src/test/ui/mir/ssa-analysis-regression-50041.rs index c818f2976e1..1892807253a 100644 --- a/src/test/ui/mir/ssa-analysis-regression-50041.rs +++ b/src/test/ui/mir/ssa-analysis-regression-50041.rs @@ -1,5 +1,5 @@ // build-pass -// compile-flags: -Z mir-opt-level=3 +// compile-flags: -Z mir-opt-level=4 #![crate_type="lib"] #![feature(lang_items)] diff --git a/src/test/ui/polymorphization/promoted-function-3.rs b/src/test/ui/polymorphization/promoted-function-3.rs index 1c84df13e10..bbd991e36cc 100644 --- a/src/test/ui/polymorphization/promoted-function-3.rs +++ b/src/test/ui/polymorphization/promoted-function-3.rs @@ -1,5 +1,5 @@ // run-pass -// compile-flags: -Zpolymorphize=on -Zmir-opt-level=3 +// compile-flags: -Zpolymorphize=on -Zmir-opt-level=4 fn caller<T, U>() -> &'static usize { callee::<U>() diff --git a/src/test/ui/rfc-2091-track-caller/caller-location-intrinsic.rs b/src/test/ui/rfc-2091-track-caller/caller-location-intrinsic.rs index b2ed8a0d7da..e5754d355d9 100644 --- a/src/test/ui/rfc-2091-track-caller/caller-location-intrinsic.rs +++ b/src/test/ui/rfc-2091-track-caller/caller-location-intrinsic.rs @@ -1,6 +1,6 @@ // run-pass // revisions: default mir-opt -//[mir-opt] compile-flags: -Zmir-opt-level=3 +//[mir-opt] compile-flags: -Zmir-opt-level=4 #[inline(never)] #[track_caller] diff --git a/src/test/ui/rfc-2091-track-caller/const-caller-location.rs b/src/test/ui/rfc-2091-track-caller/const-caller-location.rs index 89a42acafba..89b0b69f38d 100644 --- a/src/test/ui/rfc-2091-track-caller/const-caller-location.rs +++ b/src/test/ui/rfc-2091-track-caller/const-caller-location.rs @@ -1,6 +1,6 @@ // run-pass // revisions: default mir-opt -//[mir-opt] compile-flags: -Zmir-opt-level=3 +//[mir-opt] compile-flags: -Zmir-opt-level=4 #![feature(const_caller_location, const_fn)] diff --git a/src/test/ui/rfc-2091-track-caller/intrinsic-wrapper.rs b/src/test/ui/rfc-2091-track-caller/intrinsic-wrapper.rs index d072fb76f10..87e52881c15 100644 --- a/src/test/ui/rfc-2091-track-caller/intrinsic-wrapper.rs +++ b/src/test/ui/rfc-2091-track-caller/intrinsic-wrapper.rs @@ -1,6 +1,6 @@ // run-pass // revisions: default mir-opt -//[mir-opt] compile-flags: -Zmir-opt-level=3 +//[mir-opt] compile-flags: -Zmir-opt-level=4 macro_rules! caller_location_from_macro { () => (core::panic::Location::caller()); diff --git a/src/test/ui/rfc-2091-track-caller/pass.rs b/src/test/ui/rfc-2091-track-caller/pass.rs index 4d548d4f0aa..1b13ea3e93c 100644 --- a/src/test/ui/rfc-2091-track-caller/pass.rs +++ b/src/test/ui/rfc-2091-track-caller/pass.rs @@ -1,6 +1,6 @@ // run-pass // revisions: default mir-opt -//[mir-opt] compile-flags: -Zmir-opt-level=3 +//[mir-opt] compile-flags: -Zmir-opt-level=4 #[track_caller] fn f() {} diff --git a/src/test/ui/rfc-2091-track-caller/std-panic-locations.rs b/src/test/ui/rfc-2091-track-caller/std-panic-locations.rs index 0d7a5c42532..84b7c6701e5 100644 --- a/src/test/ui/rfc-2091-track-caller/std-panic-locations.rs +++ b/src/test/ui/rfc-2091-track-caller/std-panic-locations.rs @@ -1,7 +1,7 @@ // run-pass // ignore-wasm32-bare compiled with panic=abort by default // revisions: default mir-opt -//[mir-opt] compile-flags: -Zmir-opt-level=3 +//[mir-opt] compile-flags: -Zmir-opt-level=4 #![feature(option_expect_none, option_unwrap_none)] #![allow(unconditional_panic)] diff --git a/src/test/ui/rfc-2091-track-caller/track-caller-attribute.rs b/src/test/ui/rfc-2091-track-caller/track-caller-attribute.rs index 43135ebbf65..9d28eb9de09 100644 --- a/src/test/ui/rfc-2091-track-caller/track-caller-attribute.rs +++ b/src/test/ui/rfc-2091-track-caller/track-caller-attribute.rs @@ -1,6 +1,6 @@ // run-pass // revisions: default mir-opt -//[mir-opt] compile-flags: -Zmir-opt-level=3 +//[mir-opt] compile-flags: -Zmir-opt-level=4 use std::panic::Location; diff --git a/src/test/ui/rfc-2091-track-caller/tracked-fn-ptr-with-arg.rs b/src/test/ui/rfc-2091-track-caller/tracked-fn-ptr-with-arg.rs index 2122a4ca219..65881257815 100644 --- a/src/test/ui/rfc-2091-track-caller/tracked-fn-ptr-with-arg.rs +++ b/src/test/ui/rfc-2091-track-caller/tracked-fn-ptr-with-arg.rs @@ -1,6 +1,6 @@ // run-pass // revisions: default mir-opt -//[mir-opt] compile-flags: -Zmir-opt-level=3 +//[mir-opt] compile-flags: -Zmir-opt-level=4 fn pass_to_ptr_call<T>(f: fn(T), x: T) { f(x); diff --git a/src/test/ui/rfc-2091-track-caller/tracked-fn-ptr.rs b/src/test/ui/rfc-2091-track-caller/tracked-fn-ptr.rs index 922d2d7b702..8bb4dd288f0 100644 --- a/src/test/ui/rfc-2091-track-caller/tracked-fn-ptr.rs +++ b/src/test/ui/rfc-2091-track-caller/tracked-fn-ptr.rs @@ -1,6 +1,6 @@ // run-pass // revisions: default mir-opt -//[mir-opt] compile-flags: -Zmir-opt-level=3 +//[mir-opt] compile-flags: -Zmir-opt-level=4 fn ptr_call(f: fn()) { f(); diff --git a/src/test/ui/simd-intrinsic/simd-intrinsic-inlining-issue67557-ice.rs b/src/test/ui/simd-intrinsic/simd-intrinsic-inlining-issue67557-ice.rs index 4c09ae25c5f..4be68183050 100644 --- a/src/test/ui/simd-intrinsic/simd-intrinsic-inlining-issue67557-ice.rs +++ b/src/test/ui/simd-intrinsic/simd-intrinsic-inlining-issue67557-ice.rs @@ -2,7 +2,7 @@ // passed the wrong Instance, causing issues with inlining. See #67557. // // run-pass -// compile-flags: -Zmir-opt-level=3 +// compile-flags: -Zmir-opt-level=4 #![feature(platform_intrinsics, repr_simd)] extern "platform-intrinsic" { diff --git a/src/test/ui/simd-intrinsic/simd-intrinsic-inlining-issue67557.rs b/src/test/ui/simd-intrinsic/simd-intrinsic-inlining-issue67557.rs index 7a0d955686b..67556829815 100644 --- a/src/test/ui/simd-intrinsic/simd-intrinsic-inlining-issue67557.rs +++ b/src/test/ui/simd-intrinsic/simd-intrinsic-inlining-issue67557.rs @@ -2,7 +2,7 @@ // the wrong Instance, causing issues with inlining. See #67557. // // run-pass -// compile-flags: -Zmir-opt-level=3 +// compile-flags: -Zmir-opt-level=4 #![feature(platform_intrinsics, repr_simd)] extern "platform-intrinsic" { diff --git a/src/tools/clippy/src/driver.rs b/src/tools/clippy/src/driver.rs index d5143e1438e..94af21568ee 100644 --- a/src/tools/clippy/src/driver.rs +++ b/src/tools/clippy/src/driver.rs @@ -83,7 +83,7 @@ impl rustc_driver::Callbacks for ClippyCallbacks { // run on the unoptimized MIR. On the other hand this results in some false negatives. If // MIR passes can be enabled / disabled separately, we should figure out, what passes to // use for Clippy. - config.opts.debugging_opts.mir_opt_level = 0; + config.opts.debugging_opts.mir_opt_level = Some(0); } } diff --git a/src/tools/compiletest/src/runtest.rs b/src/tools/compiletest/src/runtest.rs index 2e7b42b6c7c..9a82591e5a7 100644 --- a/src/tools/compiletest/src/runtest.rs +++ b/src/tools/compiletest/src/runtest.rs @@ -1960,7 +1960,7 @@ impl<'test> TestCx<'test> { rustc.args(&[ "-Copt-level=1", "-Zdump-mir=all", - "-Zmir-opt-level=3", + "-Zmir-opt-level=4", "-Zvalidate-mir", "-Zdump-mir-exclude-pass-number", ]); |
