about summary refs log tree commit diff
diff options
context:
space:
mode:
authorNiko Matsakis <niko@alum.mit.edu>2017-04-27 13:16:57 -0400
committerNiko Matsakis <niko@alum.mit.edu>2017-05-02 14:01:01 -0400
commitf23a7bc98a221db000991f6a618602a9a4b35759 (patch)
treedca399327c1884b00704138a66cb9d48bc28cc53
parent668886a6ccaf294bf0ab3742e693997ce39b716b (diff)
downloadrust-f23a7bc98a221db000991f6a618602a9a4b35759.tar.gz
rust-f23a7bc98a221db000991f6a618602a9a4b35759.zip
move to only def-id passes
this temporary disables `inline`
-rw-r--r--src/librustc/mir/transform.rs16
-rw-r--r--src/librustc_driver/driver.rs2
-rw-r--r--src/librustc_mir/transform/dump_mir.rs4
3 files changed, 13 insertions, 9 deletions
diff --git a/src/librustc/mir/transform.rs b/src/librustc/mir/transform.rs
index cfe8254d1bb..8ecfbfdb5c3 100644
--- a/src/librustc/mir/transform.rs
+++ b/src/librustc/mir/transform.rs
@@ -93,7 +93,7 @@ pub fn default_name<T: ?Sized>() -> Cow<'static, str> {
 pub trait PassHook {
     fn on_mir_pass<'a, 'tcx>(&self,
                              tcx: TyCtxt<'a, 'tcx, 'tcx>,
-                             pass: &Pass,
+                             pass_name: &str,
                              pass_num: usize,
                              is_after: bool);
 }
@@ -173,7 +173,7 @@ pub struct Passes {
 
 #[derive(Clone)]
 struct PassSet {
-    passes: Vec<Rc<Pass>>,
+    passes: Vec<Rc<DefIdPass>>,
 }
 
 /// The number of "pass sets" that we have:
@@ -208,19 +208,23 @@ impl<'a, 'tcx> Passes {
         // NB: passes are numbered from 1, since "construction" is zero.
         for (pass, pass_num) in set.passes.iter().zip(start_num + 1..) {
             for hook in &self.pass_hooks {
-                hook.on_mir_pass(tcx, &**pass, pass_num, false);
+                hook.on_mir_pass(tcx, &pass.name(), pass_num, false);
             }
 
-            time(tcx.sess.time_passes(), &*pass.name(), || pass.run_pass(tcx));
+            time(tcx.sess.time_passes(), &*pass.name(), || {
+                for &def_id in tcx.mir_keys(LOCAL_CRATE).iter() {
+                    pass.run_pass(tcx, def_id);
+                }
+            });
 
             for hook in &self.pass_hooks {
-                hook.on_mir_pass(tcx, &**pass, pass_num, true);
+                hook.on_mir_pass(tcx, &pass.name(), pass_num, true);
             }
         }
     }
 
     /// Pushes a built-in pass.
-    pub fn push_pass<T: Pass + 'static>(&mut self, set: usize, pass: T) {
+    pub fn push_pass<T: DefIdPass + 'static>(&mut self, set: usize, pass: T) {
         self.sets[set].passes.push(Rc::new(pass));
     }
 
diff --git a/src/librustc_driver/driver.rs b/src/librustc_driver/driver.rs
index 89f01226113..4c984559428 100644
--- a/src/librustc_driver/driver.rs
+++ b/src/librustc_driver/driver.rs
@@ -929,7 +929,7 @@ pub fn phase_3_run_analysis_passes<'tcx, F, R>(sess: &'tcx Session,
     passes.push_pass(MIR_OPTIMIZED, mir::transform::simplify::SimplifyCfg::new("elaborate-drops"));
 
     // No lifetime analysis based on borrowing can be done from here on out.
-    passes.push_pass(MIR_OPTIMIZED, mir::transform::inline::Inline);
+    // passes.push_pass(MIR_OPTIMIZED, mir::transform::inline::Inline); // TODO re-enable
     passes.push_pass(MIR_OPTIMIZED, mir::transform::instcombine::InstCombine);
     passes.push_pass(MIR_OPTIMIZED, mir::transform::deaggregator::Deaggregator);
     passes.push_pass(MIR_OPTIMIZED, mir::transform::copy_prop::CopyPropagation);
diff --git a/src/librustc_mir/transform/dump_mir.rs b/src/librustc_mir/transform/dump_mir.rs
index 43fb0acf2dd..62b480494c3 100644
--- a/src/librustc_mir/transform/dump_mir.rs
+++ b/src/librustc_mir/transform/dump_mir.rs
@@ -50,7 +50,7 @@ impl PassHook for DumpMir {
     fn on_mir_pass<'a, 'tcx>(
         &self,
         tcx: TyCtxt<'a, 'tcx, 'tcx>,
-        pass: &Pass,
+        pass_name: &str,
         pass_num: usize,
         is_after: bool)
     {
@@ -66,7 +66,7 @@ impl PassHook for DumpMir {
             mir_util::dump_mir(
                 tcx,
                 pass_num,
-                &*pass.name(),
+                &pass_name,
                 &Disambiguator { is_after },
                 source,
                 &mir