Add support for MIR opt unit tests

This commit is contained in:
Jakob Degen 2022-04-11 15:17:52 -04:00
parent c8422403f7
commit f280a839a7
5 changed files with 52 additions and 5 deletions

View file

@ -77,17 +77,30 @@ pub fn run_passes<'tcx>(tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>, passes: &[&dyn
let mut cnt = 0;
let validate = tcx.sess.opts.debugging_opts.validate_mir;
let overridden_passes = &tcx.sess.opts.debugging_opts.mir_enable_passes;
trace!("Overridden: {:?}", overridden_passes);
if validate {
validate_body(tcx, body, format!("start of phase transition from {:?}", start_phase));
}
for pass in passes {
if !pass.is_enabled(&tcx.sess) {
continue;
}
let name = pass.name();
if let Some((_, polarity)) = overridden_passes.iter().rev().find(|(s, _)| s == &*name) {
trace!(
"{} {} as requested by flag",
if *polarity { "Running" } else { "Not running" },
name
);
if !polarity {
continue;
}
} else {
if !pass.is_enabled(&tcx.sess) {
continue;
}
}
let dump_enabled = pass.is_mir_dump_enabled();
if dump_enabled {