Skip to content

Commit 3fc3142

Browse files
authored
Rollup merge of #122656 - RalfJung:simplify-cfg, r=compiler-errors
simplify_cfg: rename some passes so that they make more sense I was extremely confused by `SimplifyCfg::ElaborateDrops`, since it runs way later than drop elaboration. It is used e.g. in `mir-opt/retag.rs` even though that pass doesn't care about drop elaboration at all. "Early opt" is also very confusing since that makes it sounds like it runs early during optimizations, i.e. on runtime MIR, but actually it runs way before that. So I decided to rename - early-opt -> post-analysis - elaborate-drops -> pre-optimizations I am open to other suggestions.
2 parents 86bb0bc + 23a4ad1 commit 3fc3142

File tree

29 files changed

+43
-40
lines changed

29 files changed

+43
-40
lines changed

compiler/rustc_mir_transform/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -507,7 +507,7 @@ fn run_analysis_cleanup_passes<'tcx>(tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>) {
507507
let passes: &[&dyn MirPass<'tcx>] = &[
508508
&cleanup_post_borrowck::CleanupPostBorrowck,
509509
&remove_noop_landing_pads::RemoveNoopLandingPads,
510-
&simplify::SimplifyCfg::EarlyOpt,
510+
&simplify::SimplifyCfg::PostAnalysis,
511511
&deref_separator::Derefer,
512512
];
513513

@@ -544,7 +544,7 @@ fn run_runtime_cleanup_passes<'tcx>(tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>) {
544544
let passes: &[&dyn MirPass<'tcx>] = &[
545545
&lower_intrinsics::LowerIntrinsics,
546546
&remove_place_mention::RemovePlaceMention,
547-
&simplify::SimplifyCfg::ElaborateDrops,
547+
&simplify::SimplifyCfg::PreOptimizations,
548548
];
549549

550550
pm::run_passes(tcx, body, passes, Some(MirPhase::Runtime(RuntimePhase::PostCleanup)));

compiler/rustc_mir_transform/src/simplify.rs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,11 @@ pub enum SimplifyCfg {
3737
Initial,
3838
PromoteConsts,
3939
RemoveFalseEdges,
40-
EarlyOpt,
41-
ElaborateDrops,
40+
/// Runs at the beginning of "analysis to runtime" lowering, *before* drop elaboration.
41+
PostAnalysis,
42+
/// Runs at the end of "analysis to runtime" lowering, *after* drop elaboration.
43+
/// This is before the main optimization passes on runtime MIR kick in.
44+
PreOptimizations,
4245
Final,
4346
MakeShim,
4447
AfterUninhabitedEnumBranching,
@@ -50,8 +53,8 @@ impl SimplifyCfg {
5053
SimplifyCfg::Initial => "SimplifyCfg-initial",
5154
SimplifyCfg::PromoteConsts => "SimplifyCfg-promote-consts",
5255
SimplifyCfg::RemoveFalseEdges => "SimplifyCfg-remove-false-edges",
53-
SimplifyCfg::EarlyOpt => "SimplifyCfg-early-opt",
54-
SimplifyCfg::ElaborateDrops => "SimplifyCfg-elaborate-drops",
56+
SimplifyCfg::PostAnalysis => "SimplifyCfg-post-analysis",
57+
SimplifyCfg::PreOptimizations => "SimplifyCfg-pre-optimizations",
5558
SimplifyCfg::Final => "SimplifyCfg-final",
5659
SimplifyCfg::MakeShim => "SimplifyCfg-make_shim",
5760
SimplifyCfg::AfterUninhabitedEnumBranching => {

tests/mir-opt/array_index_is_temporary.main.SimplifyCfg-elaborate-drops.after.panic-abort.mir renamed to tests/mir-opt/array_index_is_temporary.main.SimplifyCfg-pre-optimizations.after.panic-abort.mir

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// MIR for `main` after SimplifyCfg-elaborate-drops
1+
// MIR for `main` after SimplifyCfg-pre-optimizations
22

33
fn main() -> () {
44
let mut _0: ();

tests/mir-opt/array_index_is_temporary.main.SimplifyCfg-elaborate-drops.after.panic-unwind.mir renamed to tests/mir-opt/array_index_is_temporary.main.SimplifyCfg-pre-optimizations.after.panic-unwind.mir

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// MIR for `main` after SimplifyCfg-elaborate-drops
1+
// MIR for `main` after SimplifyCfg-pre-optimizations
22

33
fn main() -> () {
44
let mut _0: ();

tests/mir-opt/array_index_is_temporary.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
//@ unit-test: SimplifyCfg-elaborate-drops
1+
//@ unit-test: SimplifyCfg-pre-optimizations
22
// EMIT_MIR_FOR_EACH_PANIC_STRATEGY
33
// Retagging (from Stacked Borrows) relies on the array index being a fresh
44
// temporary, so that side-effects cannot change it.
@@ -10,7 +10,7 @@ unsafe fn foo(z: *mut usize) -> u32 {
1010
}
1111

1212

13-
// EMIT_MIR array_index_is_temporary.main.SimplifyCfg-elaborate-drops.after.mir
13+
// EMIT_MIR array_index_is_temporary.main.SimplifyCfg-pre-optimizations.after.mir
1414
fn main() {
1515
// CHECK-LABEL: fn main(
1616
// CHECK: debug x => [[x:_.*]];

tests/mir-opt/byte_slice.main.SimplifyCfg-elaborate-drops.after.mir renamed to tests/mir-opt/byte_slice.main.SimplifyCfg-pre-optimizations.after.mir

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// MIR for `main` after SimplifyCfg-elaborate-drops
1+
// MIR for `main` after SimplifyCfg-pre-optimizations
22

33
fn main() -> () {
44
let mut _0: ();

tests/mir-opt/byte_slice.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// skip-filecheck
22
//@ compile-flags: -Z mir-opt-level=0
33

4-
// EMIT_MIR byte_slice.main.SimplifyCfg-elaborate-drops.after.mir
4+
// EMIT_MIR byte_slice.main.SimplifyCfg-pre-optimizations.after.mir
55
fn main() {
66
let x = b"foo";
77
let y = [5u8, b'x'];

tests/mir-opt/const_promotion_extern_static.BAR-promoted[0].SimplifyCfg-elaborate-drops.after.mir renamed to tests/mir-opt/const_promotion_extern_static.BAR-promoted[0].SimplifyCfg-pre-optimizations.after.mir

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// MIR for `BAR::promoted[0]` after SimplifyCfg-elaborate-drops
1+
// MIR for `BAR::promoted[0]` after SimplifyCfg-pre-optimizations
22

33
const BAR::promoted[0]: &[&i32; 1] = {
44
let mut _0: &[&i32; 1];

tests/mir-opt/const_promotion_extern_static.FOO-promoted[0].SimplifyCfg-elaborate-drops.after.mir renamed to tests/mir-opt/const_promotion_extern_static.FOO-promoted[0].SimplifyCfg-pre-optimizations.after.mir

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// MIR for `FOO::promoted[0]` after SimplifyCfg-elaborate-drops
1+
// MIR for `FOO::promoted[0]` after SimplifyCfg-pre-optimizations
22

33
const FOO::promoted[0]: &[&i32; 1] = {
44
let mut _0: &[&i32; 1];

tests/mir-opt/const_promotion_extern_static.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@ extern "C" {
66
static Y: i32 = 42;
77

88
// EMIT_MIR const_promotion_extern_static.BAR.PromoteTemps.diff
9-
// EMIT_MIR const_promotion_extern_static.BAR-promoted[0].SimplifyCfg-elaborate-drops.after.mir
9+
// EMIT_MIR const_promotion_extern_static.BAR-promoted[0].SimplifyCfg-pre-optimizations.after.mir
1010
static mut BAR: *const &i32 = [&Y].as_ptr();
1111

1212
// EMIT_MIR const_promotion_extern_static.FOO.PromoteTemps.diff
13-
// EMIT_MIR const_promotion_extern_static.FOO-promoted[0].SimplifyCfg-elaborate-drops.after.mir
13+
// EMIT_MIR const_promotion_extern_static.FOO-promoted[0].SimplifyCfg-pre-optimizations.after.mir
1414
static mut FOO: *const &i32 = [unsafe { &X }].as_ptr();
1515

1616
// EMIT_MIR const_promotion_extern_static.BOP.built.after.mir

0 commit comments

Comments
 (0)