]> git.proxmox.com Git - rustc.git/blame - compiler/rustc_mir_transform/src/dump_mir.rs
New upstream version 1.58.1+dfsg1
[rustc.git] / compiler / rustc_mir_transform / src / dump_mir.rs
CommitLineData
3157f602
XL
1//! This pass just dumps MIR at a specified point.
2
7cac9316 3use std::borrow::Cow;
cc61c64b
XL
4use std::fs::File;
5use std::io;
3157f602 6
c295e0f8 7use crate::MirPass;
3c0e092e 8use rustc_middle::mir::write_mir_pretty;
f9f354fc 9use rustc_middle::mir::Body;
ba9703b0
XL
10use rustc_middle::ty::TyCtxt;
11use rustc_session::config::{OutputFilenames, OutputType};
3157f602 12
7cac9316 13pub struct Marker(pub &'static str);
3157f602 14
e1599b0c 15impl<'tcx> MirPass<'tcx> for Marker {
416331ca 16 fn name(&self) -> Cow<'_, str> {
7cac9316
XL
17 Cow::Borrowed(self.0)
18 }
3157f602 19
29967ef6 20 fn run_pass(&self, _tcx: TyCtxt<'tcx>, _body: &mut Body<'tcx>) {}
3157f602
XL
21}
22
416331ca 23pub fn emit_mir(tcx: TyCtxt<'_>, outputs: &OutputFilenames) -> io::Result<()> {
cc61c64b 24 let path = outputs.path(OutputType::Mir);
74b04a01 25 let mut f = io::BufWriter::new(File::create(&path)?);
c295e0f8 26 write_mir_pretty(tcx, None, &mut f)?;
cc61c64b
XL
27 Ok(())
28}