From cf1d702411b856e99ff9a3d2a465b9680536e7f0 Mon Sep 17 00:00:00 2001 From: Cameron Steffen Date: Fri, 8 Oct 2021 10:56:15 -0500 Subject: [PATCH 1/2] Remove redundant dump_enabled check --- compiler/rustc_mir_transform/src/dump_mir.rs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/compiler/rustc_mir_transform/src/dump_mir.rs b/compiler/rustc_mir_transform/src/dump_mir.rs index 2a24e1ea8d7ed..9fa0460e7cb9d 100644 --- a/compiler/rustc_mir_transform/src/dump_mir.rs +++ b/compiler/rustc_mir_transform/src/dump_mir.rs @@ -7,7 +7,7 @@ use std::io; use crate::MirPass; use rustc_middle::mir::Body; -use rustc_middle::mir::{dump_enabled, dump_mir, write_mir_pretty}; +use rustc_middle::mir::{dump_mir, write_mir_pretty}; use rustc_middle::ty::TyCtxt; use rustc_session::config::{OutputFilenames, OutputType}; @@ -39,9 +39,7 @@ pub fn on_mir_pass<'tcx>( body: &Body<'tcx>, is_after: bool, ) { - if dump_enabled(tcx, pass_name, body.source.def_id()) { - dump_mir(tcx, Some(pass_num), pass_name, &Disambiguator { is_after }, body, |_, _| Ok(())); - } + dump_mir(tcx, Some(pass_num), pass_name, &Disambiguator { is_after }, body, |_, _| Ok(())); } pub fn emit_mir(tcx: TyCtxt<'_>, outputs: &OutputFilenames) -> io::Result<()> { From 7166df4b595c9d275b2bf07af2b0623a5a39f80f Mon Sep 17 00:00:00 2001 From: Cameron Steffen Date: Thu, 14 Oct 2021 15:26:59 -0500 Subject: [PATCH 2/2] Inline on_mir_pass and add inline to dump_mir --- compiler/rustc_middle/src/mir/pretty.rs | 1 + compiler/rustc_mir_transform/src/dump_mir.rs | 24 +------------------- compiler/rustc_mir_transform/src/lib.rs | 10 ++++---- 3 files changed, 8 insertions(+), 27 deletions(-) diff --git a/compiler/rustc_middle/src/mir/pretty.rs b/compiler/rustc_middle/src/mir/pretty.rs index db98cb763430f..8e363cfbff562 100644 --- a/compiler/rustc_middle/src/mir/pretty.rs +++ b/compiler/rustc_middle/src/mir/pretty.rs @@ -71,6 +71,7 @@ pub enum PassWhere { /// or `typeck` appears in the name. /// - `foo & nll | bar & typeck` == match if `foo` and `nll` both appear in the name /// or `typeck` and `bar` both appear in the name. +#[inline] pub fn dump_mir<'tcx, F>( tcx: TyCtxt<'tcx>, pass_num: Option<&dyn Display>, diff --git a/compiler/rustc_mir_transform/src/dump_mir.rs b/compiler/rustc_mir_transform/src/dump_mir.rs index 9fa0460e7cb9d..6b995141a2bef 100644 --- a/compiler/rustc_mir_transform/src/dump_mir.rs +++ b/compiler/rustc_mir_transform/src/dump_mir.rs @@ -1,13 +1,12 @@ //! This pass just dumps MIR at a specified point. use std::borrow::Cow; -use std::fmt; use std::fs::File; use std::io; use crate::MirPass; +use rustc_middle::mir::write_mir_pretty; use rustc_middle::mir::Body; -use rustc_middle::mir::{dump_mir, write_mir_pretty}; use rustc_middle::ty::TyCtxt; use rustc_session::config::{OutputFilenames, OutputType}; @@ -21,27 +20,6 @@ impl<'tcx> MirPass<'tcx> for Marker { fn run_pass(&self, _tcx: TyCtxt<'tcx>, _body: &mut Body<'tcx>) {} } -pub struct Disambiguator { - is_after: bool, -} - -impl fmt::Display for Disambiguator { - fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result { - let title = if self.is_after { "after" } else { "before" }; - write!(formatter, "{}", title) - } -} - -pub fn on_mir_pass<'tcx>( - tcx: TyCtxt<'tcx>, - pass_num: &dyn fmt::Display, - pass_name: &str, - body: &Body<'tcx>, - is_after: bool, -) { - dump_mir(tcx, Some(pass_num), pass_name, &Disambiguator { is_after }, body, |_, _| Ok(())); -} - pub fn emit_mir(tcx: TyCtxt<'_>, outputs: &OutputFilenames) -> io::Result<()> { let path = outputs.path(OutputType::Mir); let mut f = io::BufWriter::new(File::create(&path)?); diff --git a/compiler/rustc_mir_transform/src/lib.rs b/compiler/rustc_mir_transform/src/lib.rs index 9b11c8f0b24c0..39a686977fae9 100644 --- a/compiler/rustc_mir_transform/src/lib.rs +++ b/compiler/rustc_mir_transform/src/lib.rs @@ -27,7 +27,7 @@ use rustc_hir::def_id::{DefId, LocalDefId}; use rustc_hir::intravisit::{self, NestedVisitorMap, Visitor}; use rustc_index::vec::IndexVec; use rustc_middle::mir::visit::Visitor as _; -use rustc_middle::mir::{traversal, Body, ConstQualifs, MirPhase, Promoted}; +use rustc_middle::mir::{dump_mir, traversal, Body, ConstQualifs, MirPhase, Promoted}; use rustc_middle::ty::query::Providers; use rustc_middle::ty::{self, TyCtxt, TypeFoldable}; use rustc_span::{Span, Symbol}; @@ -187,12 +187,14 @@ fn run_passes( let mut index = 0; let mut run_pass = |pass: &dyn MirPass<'tcx>| { let run_hooks = |body: &_, index, is_after| { - dump_mir::on_mir_pass( + let disambiguator = if is_after { "after" } else { "before" }; + dump_mir( tcx, - &format_args!("{:03}-{:03}", phase_index, index), + Some(&format_args!("{:03}-{:03}", phase_index, index)), &pass.name(), + &disambiguator, body, - is_after, + |_, _| Ok(()), ); }; run_hooks(body, index, false);