diff --git a/src/librustc_driver/driver.rs b/src/librustc_driver/driver.rs index 64d09a236586..9cca37ce2c3d 100644 --- a/src/librustc_driver/driver.rs +++ b/src/librustc_driver/driver.rs @@ -738,8 +738,9 @@ pub fn phase_3_run_analysis_passes<'tcx, F, R>(sess: Session, time(time_passes, "match checking", || middle::check_match::check_crate(tcx)); - time(time_passes, "MIR dump", || - mir::dump::dump_crate(tcx)); + let _mir_map = + time(time_passes, "MIR dump", || + mir::dump::dump_crate(tcx)); time(time_passes, "liveness checking", || middle::liveness::check_crate(tcx)); diff --git a/src/librustc_mir/dump.rs b/src/librustc_mir/dump.rs index 01c4c84af02e..7346771656de 100644 --- a/src/librustc_mir/dump.rs +++ b/src/librustc_mir/dump.rs @@ -37,10 +37,15 @@ use self::syntax::ast; use self::syntax::attr::AttrMetaMethods; use self::syntax::codemap::Span; -pub fn dump_crate(tcx: &ty::ctxt) { +pub type MirMap<'tcx> = NodeMap>; + +pub fn dump_crate<'tcx>(tcx: &ty::ctxt<'tcx>) -> MirMap<'tcx>{ let mut map = NodeMap(); - let mut dump = OuterDump { tcx: tcx, map: &mut map }; - visit::walk_crate(&mut dump, tcx.map.krate()); + { + let mut dump = OuterDump { tcx: tcx, map: &mut map }; + visit::walk_crate(&mut dump, tcx.map.krate()); + } + map } /////////////////////////////////////////////////////////////////////////// @@ -48,7 +53,7 @@ pub fn dump_crate(tcx: &ty::ctxt) { struct OuterDump<'a,'tcx:'a> { tcx: &'a ty::ctxt<'tcx>, - map: &'a mut NodeMap>, + map: &'a mut MirMap<'tcx>, } impl<'a, 'tcx> OuterDump<'a, 'tcx> { @@ -101,7 +106,7 @@ impl<'a, 'tcx> visit::Visitor<'tcx> for OuterDump<'a, 'tcx> { struct InnerDump<'a,'m,'tcx:'a+'m> { tcx: &'a ty::ctxt<'tcx>, - map: &'m mut NodeMap>, + map: &'m mut MirMap<'tcx>, attr: Option<&'a ast::Attribute>, }