]>
Commit | Line | Data |
---|---|---|
3157f602 XL |
1 | //! This pass just dumps MIR at a specified point. |
2 | ||
7cac9316 | 3 | use std::borrow::Cow; |
cc61c64b XL |
4 | use std::fs::File; |
5 | use std::io; | |
3157f602 | 6 | |
c295e0f8 | 7 | use crate::MirPass; |
3c0e092e | 8 | use rustc_middle::mir::write_mir_pretty; |
f9f354fc | 9 | use rustc_middle::mir::Body; |
ba9703b0 XL |
10 | use rustc_middle::ty::TyCtxt; |
11 | use rustc_session::config::{OutputFilenames, OutputType}; | |
3157f602 | 12 | |
7cac9316 | 13 | pub struct Marker(pub &'static str); |
3157f602 | 14 | |
e1599b0c | 15 | impl<'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 | 23 | pub 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 | } |