about summary refs log tree commit diff
path: root/compiler/rustc_mir_transform/src
diff options
context:
space:
mode:
authorJakob Degen <jakob.e.degen@gmail.com>2022-04-11 15:17:52 -0400
committerJakob Degen <jakob.e.degen@gmail.com>2022-04-16 18:23:59 -0400
commitf280a839a7d327dd2b38360707437cd75c954d97 (patch)
tree191623c7e1a4e778f76f2106a5efa547067d6022 /compiler/rustc_mir_transform/src
parentc8422403f775126c40d558838d321c063554c822 (diff)
downloadrust-f280a839a7d327dd2b38360707437cd75c954d97.tar.gz
rust-f280a839a7d327dd2b38360707437cd75c954d97.zip
Add support for MIR opt unit tests
Diffstat (limited to 'compiler/rustc_mir_transform/src')
-rw-r--r--compiler/rustc_mir_transform/src/pass_manager.rs21
1 files changed, 17 insertions, 4 deletions
diff --git a/compiler/rustc_mir_transform/src/pass_manager.rs b/compiler/rustc_mir_transform/src/pass_manager.rs
index 740a2168b41..cf88e8b2144 100644
--- a/compiler/rustc_mir_transform/src/pass_manager.rs
+++ b/compiler/rustc_mir_transform/src/pass_manager.rs
@@ -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 {