simplify_cfg: rename some passes so that they make more sense
This commit is contained in:
parent
35dfc67d94
commit
23a4ad12ce
@ -507,7 +507,7 @@ fn run_analysis_cleanup_passes<'tcx>(tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>) {
|
|||||||
let passes: &[&dyn MirPass<'tcx>] = &[
|
let passes: &[&dyn MirPass<'tcx>] = &[
|
||||||
&cleanup_post_borrowck::CleanupPostBorrowck,
|
&cleanup_post_borrowck::CleanupPostBorrowck,
|
||||||
&remove_noop_landing_pads::RemoveNoopLandingPads,
|
&remove_noop_landing_pads::RemoveNoopLandingPads,
|
||||||
&simplify::SimplifyCfg::EarlyOpt,
|
&simplify::SimplifyCfg::PostAnalysis,
|
||||||
&deref_separator::Derefer,
|
&deref_separator::Derefer,
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -544,7 +544,7 @@ fn run_runtime_cleanup_passes<'tcx>(tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>) {
|
|||||||
let passes: &[&dyn MirPass<'tcx>] = &[
|
let passes: &[&dyn MirPass<'tcx>] = &[
|
||||||
&lower_intrinsics::LowerIntrinsics,
|
&lower_intrinsics::LowerIntrinsics,
|
||||||
&remove_place_mention::RemovePlaceMention,
|
&remove_place_mention::RemovePlaceMention,
|
||||||
&simplify::SimplifyCfg::ElaborateDrops,
|
&simplify::SimplifyCfg::PreOptimizations,
|
||||||
];
|
];
|
||||||
|
|
||||||
pm::run_passes(tcx, body, passes, Some(MirPhase::Runtime(RuntimePhase::PostCleanup)));
|
pm::run_passes(tcx, body, passes, Some(MirPhase::Runtime(RuntimePhase::PostCleanup)));
|
||||||
|
@ -37,8 +37,11 @@ pub enum SimplifyCfg {
|
|||||||
Initial,
|
Initial,
|
||||||
PromoteConsts,
|
PromoteConsts,
|
||||||
RemoveFalseEdges,
|
RemoveFalseEdges,
|
||||||
EarlyOpt,
|
/// Runs at the beginning of "analysis to runtime" lowering, *before* drop elaboration.
|
||||||
ElaborateDrops,
|
PostAnalysis,
|
||||||
|
/// Runs at the end of "analysis to runtime" lowering, *after* drop elaboration.
|
||||||
|
/// This is before the main optimization passes on runtime MIR kick in.
|
||||||
|
PreOptimizations,
|
||||||
Final,
|
Final,
|
||||||
MakeShim,
|
MakeShim,
|
||||||
AfterUninhabitedEnumBranching,
|
AfterUninhabitedEnumBranching,
|
||||||
@ -50,8 +53,8 @@ pub fn name(&self) -> &'static str {
|
|||||||
SimplifyCfg::Initial => "SimplifyCfg-initial",
|
SimplifyCfg::Initial => "SimplifyCfg-initial",
|
||||||
SimplifyCfg::PromoteConsts => "SimplifyCfg-promote-consts",
|
SimplifyCfg::PromoteConsts => "SimplifyCfg-promote-consts",
|
||||||
SimplifyCfg::RemoveFalseEdges => "SimplifyCfg-remove-false-edges",
|
SimplifyCfg::RemoveFalseEdges => "SimplifyCfg-remove-false-edges",
|
||||||
SimplifyCfg::EarlyOpt => "SimplifyCfg-early-opt",
|
SimplifyCfg::PostAnalysis => "SimplifyCfg-post-analysis",
|
||||||
SimplifyCfg::ElaborateDrops => "SimplifyCfg-elaborate-drops",
|
SimplifyCfg::PreOptimizations => "SimplifyCfg-pre-optimizations",
|
||||||
SimplifyCfg::Final => "SimplifyCfg-final",
|
SimplifyCfg::Final => "SimplifyCfg-final",
|
||||||
SimplifyCfg::MakeShim => "SimplifyCfg-make_shim",
|
SimplifyCfg::MakeShim => "SimplifyCfg-make_shim",
|
||||||
SimplifyCfg::AfterUninhabitedEnumBranching => {
|
SimplifyCfg::AfterUninhabitedEnumBranching => {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// MIR for `main` after SimplifyCfg-elaborate-drops
|
// MIR for `main` after SimplifyCfg-pre-optimizations
|
||||||
|
|
||||||
fn main() -> () {
|
fn main() -> () {
|
||||||
let mut _0: ();
|
let mut _0: ();
|
@ -1,4 +1,4 @@
|
|||||||
// MIR for `main` after SimplifyCfg-elaborate-drops
|
// MIR for `main` after SimplifyCfg-pre-optimizations
|
||||||
|
|
||||||
fn main() -> () {
|
fn main() -> () {
|
||||||
let mut _0: ();
|
let mut _0: ();
|
@ -1,4 +1,4 @@
|
|||||||
//@ unit-test: SimplifyCfg-elaborate-drops
|
//@ unit-test: SimplifyCfg-pre-optimizations
|
||||||
// EMIT_MIR_FOR_EACH_PANIC_STRATEGY
|
// EMIT_MIR_FOR_EACH_PANIC_STRATEGY
|
||||||
// Retagging (from Stacked Borrows) relies on the array index being a fresh
|
// Retagging (from Stacked Borrows) relies on the array index being a fresh
|
||||||
// temporary, so that side-effects cannot change it.
|
// temporary, so that side-effects cannot change it.
|
||||||
@ -10,7 +10,7 @@ unsafe fn foo(z: *mut usize) -> u32 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// EMIT_MIR array_index_is_temporary.main.SimplifyCfg-elaborate-drops.after.mir
|
// EMIT_MIR array_index_is_temporary.main.SimplifyCfg-pre-optimizations.after.mir
|
||||||
fn main() {
|
fn main() {
|
||||||
// CHECK-LABEL: fn main(
|
// CHECK-LABEL: fn main(
|
||||||
// CHECK: debug x => [[x:_.*]];
|
// CHECK: debug x => [[x:_.*]];
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// MIR for `main` after SimplifyCfg-elaborate-drops
|
// MIR for `main` after SimplifyCfg-pre-optimizations
|
||||||
|
|
||||||
fn main() -> () {
|
fn main() -> () {
|
||||||
let mut _0: ();
|
let mut _0: ();
|
@ -1,7 +1,7 @@
|
|||||||
// skip-filecheck
|
// skip-filecheck
|
||||||
//@ compile-flags: -Z mir-opt-level=0
|
//@ compile-flags: -Z mir-opt-level=0
|
||||||
|
|
||||||
// EMIT_MIR byte_slice.main.SimplifyCfg-elaborate-drops.after.mir
|
// EMIT_MIR byte_slice.main.SimplifyCfg-pre-optimizations.after.mir
|
||||||
fn main() {
|
fn main() {
|
||||||
let x = b"foo";
|
let x = b"foo";
|
||||||
let y = [5u8, b'x'];
|
let y = [5u8, b'x'];
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// MIR for `BAR::promoted[0]` after SimplifyCfg-elaborate-drops
|
// MIR for `BAR::promoted[0]` after SimplifyCfg-pre-optimizations
|
||||||
|
|
||||||
const BAR::promoted[0]: &[&i32; 1] = {
|
const BAR::promoted[0]: &[&i32; 1] = {
|
||||||
let mut _0: &[&i32; 1];
|
let mut _0: &[&i32; 1];
|
@ -1,4 +1,4 @@
|
|||||||
// MIR for `FOO::promoted[0]` after SimplifyCfg-elaborate-drops
|
// MIR for `FOO::promoted[0]` after SimplifyCfg-pre-optimizations
|
||||||
|
|
||||||
const FOO::promoted[0]: &[&i32; 1] = {
|
const FOO::promoted[0]: &[&i32; 1] = {
|
||||||
let mut _0: &[&i32; 1];
|
let mut _0: &[&i32; 1];
|
@ -6,11 +6,11 @@
|
|||||||
static Y: i32 = 42;
|
static Y: i32 = 42;
|
||||||
|
|
||||||
// EMIT_MIR const_promotion_extern_static.BAR.PromoteTemps.diff
|
// EMIT_MIR const_promotion_extern_static.BAR.PromoteTemps.diff
|
||||||
// EMIT_MIR const_promotion_extern_static.BAR-promoted[0].SimplifyCfg-elaborate-drops.after.mir
|
// EMIT_MIR const_promotion_extern_static.BAR-promoted[0].SimplifyCfg-pre-optimizations.after.mir
|
||||||
static mut BAR: *const &i32 = [&Y].as_ptr();
|
static mut BAR: *const &i32 = [&Y].as_ptr();
|
||||||
|
|
||||||
// EMIT_MIR const_promotion_extern_static.FOO.PromoteTemps.diff
|
// EMIT_MIR const_promotion_extern_static.FOO.PromoteTemps.diff
|
||||||
// EMIT_MIR const_promotion_extern_static.FOO-promoted[0].SimplifyCfg-elaborate-drops.after.mir
|
// EMIT_MIR const_promotion_extern_static.FOO-promoted[0].SimplifyCfg-pre-optimizations.after.mir
|
||||||
static mut FOO: *const &i32 = [unsafe { &X }].as_ptr();
|
static mut FOO: *const &i32 = [unsafe { &X }].as_ptr();
|
||||||
|
|
||||||
// EMIT_MIR const_promotion_extern_static.BOP.built.after.mir
|
// EMIT_MIR const_promotion_extern_static.BOP.built.after.mir
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
// Ensure that there are no drop terminators in `unwrap<T>` (except the one along the cleanup
|
// Ensure that there are no drop terminators in `unwrap<T>` (except the one along the cleanup
|
||||||
// path).
|
// path).
|
||||||
|
|
||||||
// EMIT_MIR no_drop_for_inactive_variant.unwrap.SimplifyCfg-elaborate-drops.after.mir
|
// EMIT_MIR no_drop_for_inactive_variant.unwrap.SimplifyCfg-pre-optimizations.after.mir
|
||||||
fn unwrap<T>(opt: Option<T>) -> T {
|
fn unwrap<T>(opt: Option<T>) -> T {
|
||||||
match opt {
|
match opt {
|
||||||
Some(x) => x,
|
Some(x) => x,
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// MIR for `unwrap` after SimplifyCfg-elaborate-drops
|
// MIR for `unwrap` after SimplifyCfg-pre-optimizations
|
||||||
|
|
||||||
fn unwrap(_1: Option<T>) -> T {
|
fn unwrap(_1: Option<T>) -> T {
|
||||||
debug opt => _1;
|
debug opt => _1;
|
@ -1,4 +1,4 @@
|
|||||||
// MIR for `unwrap` after SimplifyCfg-elaborate-drops
|
// MIR for `unwrap` after SimplifyCfg-pre-optimizations
|
||||||
|
|
||||||
fn unwrap(_1: Option<T>) -> T {
|
fn unwrap(_1: Option<T>) -> T {
|
||||||
debug opt => _1;
|
debug opt => _1;
|
@ -1,4 +1,4 @@
|
|||||||
// MIR for `main` after SimplifyCfg-elaborate-drops
|
// MIR for `main` after SimplifyCfg-pre-optimizations
|
||||||
|
|
||||||
fn main() -> () {
|
fn main() -> () {
|
||||||
let mut _0: ();
|
let mut _0: ();
|
@ -1,4 +1,4 @@
|
|||||||
// MIR for `main` after SimplifyCfg-elaborate-drops
|
// MIR for `main` after SimplifyCfg-pre-optimizations
|
||||||
|
|
||||||
fn main() -> () {
|
fn main() -> () {
|
||||||
let mut _0: ();
|
let mut _0: ();
|
@ -2,7 +2,7 @@
|
|||||||
// EMIT_MIR_FOR_EACH_PANIC_STRATEGY
|
// EMIT_MIR_FOR_EACH_PANIC_STRATEGY
|
||||||
|
|
||||||
|
|
||||||
// EMIT_MIR packed_struct_drop_aligned.main.SimplifyCfg-elaborate-drops.after.mir
|
// EMIT_MIR packed_struct_drop_aligned.main.SimplifyCfg-pre-optimizations.after.mir
|
||||||
fn main() {
|
fn main() {
|
||||||
let mut x = Packed(Aligned(Droppy(0)));
|
let mut x = Packed(Aligned(Droppy(0)));
|
||||||
x.0 = Aligned(Droppy(0));
|
x.0 = Aligned(Droppy(0));
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// MIR for `array_casts` after SimplifyCfg-elaborate-drops
|
// MIR for `array_casts` after SimplifyCfg-pre-optimizations
|
||||||
|
|
||||||
fn array_casts() -> () {
|
fn array_casts() -> () {
|
||||||
let mut _0: ();
|
let mut _0: ();
|
@ -1,4 +1,4 @@
|
|||||||
// MIR for `array_casts` after SimplifyCfg-elaborate-drops
|
// MIR for `array_casts` after SimplifyCfg-pre-optimizations
|
||||||
|
|
||||||
fn array_casts() -> () {
|
fn array_casts() -> () {
|
||||||
let mut _0: ();
|
let mut _0: ();
|
@ -1,4 +1,4 @@
|
|||||||
// MIR for `main::{closure#0}` after SimplifyCfg-elaborate-drops
|
// MIR for `main::{closure#0}` after SimplifyCfg-pre-optimizations
|
||||||
|
|
||||||
fn main::{closure#0}(_1: &{closure@main::{closure#0}}, _2: &i32) -> &i32 {
|
fn main::{closure#0}(_1: &{closure@main::{closure#0}}, _2: &i32) -> &i32 {
|
||||||
debug x => _2;
|
debug x => _2;
|
@ -1,4 +1,4 @@
|
|||||||
// MIR for `main::{closure#0}` after SimplifyCfg-elaborate-drops
|
// MIR for `main::{closure#0}` after SimplifyCfg-pre-optimizations
|
||||||
|
|
||||||
fn main::{closure#0}(_1: &{closure@main::{closure#0}}, _2: &i32) -> &i32 {
|
fn main::{closure#0}(_1: &{closure@main::{closure#0}}, _2: &i32) -> &i32 {
|
||||||
debug x => _2;
|
debug x => _2;
|
@ -1,4 +1,4 @@
|
|||||||
// MIR for `main` after SimplifyCfg-elaborate-drops
|
// MIR for `main` after SimplifyCfg-pre-optimizations
|
||||||
|
|
||||||
fn main() -> () {
|
fn main() -> () {
|
||||||
let mut _0: ();
|
let mut _0: ();
|
@ -1,4 +1,4 @@
|
|||||||
// MIR for `main` after SimplifyCfg-elaborate-drops
|
// MIR for `main` after SimplifyCfg-pre-optimizations
|
||||||
|
|
||||||
fn main() -> () {
|
fn main() -> () {
|
||||||
let mut _0: ();
|
let mut _0: ();
|
@ -8,8 +8,8 @@
|
|||||||
|
|
||||||
struct Test(i32);
|
struct Test(i32);
|
||||||
|
|
||||||
// EMIT_MIR retag.{impl#0}-foo.SimplifyCfg-elaborate-drops.after.mir
|
// EMIT_MIR retag.{impl#0}-foo.SimplifyCfg-pre-optimizations.after.mir
|
||||||
// EMIT_MIR retag.{impl#0}-foo_shr.SimplifyCfg-elaborate-drops.after.mir
|
// EMIT_MIR retag.{impl#0}-foo_shr.SimplifyCfg-pre-optimizations.after.mir
|
||||||
impl Test {
|
impl Test {
|
||||||
// Make sure we run the pass on a method, not just on bare functions.
|
// Make sure we run the pass on a method, not just on bare functions.
|
||||||
fn foo<'x>(&self, x: &'x mut i32) -> &'x mut i32 {
|
fn foo<'x>(&self, x: &'x mut i32) -> &'x mut i32 {
|
||||||
@ -26,8 +26,8 @@ impl Drop for Test {
|
|||||||
fn drop(&mut self) {}
|
fn drop(&mut self) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
// EMIT_MIR retag.main.SimplifyCfg-elaborate-drops.after.mir
|
// EMIT_MIR retag.main.SimplifyCfg-pre-optimizations.after.mir
|
||||||
// EMIT_MIR retag.main-{closure#0}.SimplifyCfg-elaborate-drops.after.mir
|
// EMIT_MIR retag.main-{closure#0}.SimplifyCfg-pre-optimizations.after.mir
|
||||||
pub fn main() {
|
pub fn main() {
|
||||||
let mut x = 0;
|
let mut x = 0;
|
||||||
{
|
{
|
||||||
@ -55,7 +55,7 @@ pub fn main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Casting directly to an array should also go through `&raw` and thus add appropriate retags.
|
/// Casting directly to an array should also go through `&raw` and thus add appropriate retags.
|
||||||
// EMIT_MIR retag.array_casts.SimplifyCfg-elaborate-drops.after.mir
|
// EMIT_MIR retag.array_casts.SimplifyCfg-pre-optimizations.after.mir
|
||||||
fn array_casts() {
|
fn array_casts() {
|
||||||
let mut x: [usize; 2] = [0, 0];
|
let mut x: [usize; 2] = [0, 0];
|
||||||
let p = &mut x as *mut usize;
|
let p = &mut x as *mut usize;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// MIR for `<impl at $DIR/retag.rs:13:1: 13:10>::foo` after SimplifyCfg-elaborate-drops
|
// MIR for `<impl at $DIR/retag.rs:13:1: 13:10>::foo` after SimplifyCfg-pre-optimizations
|
||||||
|
|
||||||
fn <impl at $DIR/retag.rs:13:1: 13:10>::foo(_1: &Test, _2: &mut i32) -> &mut i32 {
|
fn <impl at $DIR/retag.rs:13:1: 13:10>::foo(_1: &Test, _2: &mut i32) -> &mut i32 {
|
||||||
debug self => _1;
|
debug self => _1;
|
@ -1,4 +1,4 @@
|
|||||||
// MIR for `<impl at $DIR/retag.rs:13:1: 13:10>::foo` after SimplifyCfg-elaborate-drops
|
// MIR for `<impl at $DIR/retag.rs:13:1: 13:10>::foo` after SimplifyCfg-pre-optimizations
|
||||||
|
|
||||||
fn <impl at $DIR/retag.rs:13:1: 13:10>::foo(_1: &Test, _2: &mut i32) -> &mut i32 {
|
fn <impl at $DIR/retag.rs:13:1: 13:10>::foo(_1: &Test, _2: &mut i32) -> &mut i32 {
|
||||||
debug self => _1;
|
debug self => _1;
|
@ -1,4 +1,4 @@
|
|||||||
// MIR for `<impl at $DIR/retag.rs:13:1: 13:10>::foo_shr` after SimplifyCfg-elaborate-drops
|
// MIR for `<impl at $DIR/retag.rs:13:1: 13:10>::foo_shr` after SimplifyCfg-pre-optimizations
|
||||||
|
|
||||||
fn <impl at $DIR/retag.rs:13:1: 13:10>::foo_shr(_1: &Test, _2: &i32) -> &i32 {
|
fn <impl at $DIR/retag.rs:13:1: 13:10>::foo_shr(_1: &Test, _2: &i32) -> &i32 {
|
||||||
debug self => _1;
|
debug self => _1;
|
@ -1,4 +1,4 @@
|
|||||||
// MIR for `<impl at $DIR/retag.rs:13:1: 13:10>::foo_shr` after SimplifyCfg-elaborate-drops
|
// MIR for `<impl at $DIR/retag.rs:13:1: 13:10>::foo_shr` after SimplifyCfg-pre-optimizations
|
||||||
|
|
||||||
fn <impl at $DIR/retag.rs:13:1: 13:10>::foo_shr(_1: &Test, _2: &i32) -> &i32 {
|
fn <impl at $DIR/retag.rs:13:1: 13:10>::foo_shr(_1: &Test, _2: &i32) -> &i32 {
|
||||||
debug self => _1;
|
debug self => _1;
|
@ -1,5 +1,5 @@
|
|||||||
- // MIR for `main` before SimplifyCfg-early-opt
|
- // MIR for `main` before SimplifyCfg-post-analysis
|
||||||
+ // MIR for `main` after SimplifyCfg-early-opt
|
+ // MIR for `main` after SimplifyCfg-post-analysis
|
||||||
|
|
||||||
fn main() -> () {
|
fn main() -> () {
|
||||||
let mut _0: ();
|
let mut _0: ();
|
@ -4,7 +4,7 @@
|
|||||||
//@ no-prefer-dynamic
|
//@ no-prefer-dynamic
|
||||||
|
|
||||||
// EMIT_MIR simplify_cfg.main.SimplifyCfg-initial.diff
|
// EMIT_MIR simplify_cfg.main.SimplifyCfg-initial.diff
|
||||||
// EMIT_MIR simplify_cfg.main.SimplifyCfg-early-opt.diff
|
// EMIT_MIR simplify_cfg.main.SimplifyCfg-post-analysis.diff
|
||||||
fn main() {
|
fn main() {
|
||||||
loop {
|
loop {
|
||||||
if bar() {
|
if bar() {
|
||||||
|
Loading…
Reference in New Issue
Block a user