]> git.lizzy.rs Git - rust.git/commitdiff
move to only def-id passes
authorNiko Matsakis <niko@alum.mit.edu>
Thu, 27 Apr 2017 17:16:57 +0000 (13:16 -0400)
committerNiko Matsakis <niko@alum.mit.edu>
Tue, 2 May 2017 18:01:01 +0000 (14:01 -0400)
this temporary disables `inline`

src/librustc/mir/transform.rs
src/librustc_driver/driver.rs
src/librustc_mir/transform/dump_mir.rs

index cfe8254d1bb628b4c9ed0af304e2b620d49d53ab..8ecfbfdb5c3ef35ab8f41d62979b43d9c81fe679 100644 (file)
@@ -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 @@ pub fn run_passes(&self, tcx: TyCtxt<'a, 'tcx, 'tcx>, set_index: usize) {
         // 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));
     }
 
index 89f01226113cbc059a4cdf51773ebb694bae59d0..4c984559428bfdd631482045989b53c39982fa51 100644 (file)
@@ -929,7 +929,7 @@ macro_rules! try_with_f {
     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);
index 43fb0acf2dd86c5f146c1d494f36dd8bfd1294e6..62b480494c3ecc2b3fc601ddf7425593ed2302c2 100644 (file)
@@ -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 @@ fn on_mir_pass<'a, 'tcx>(
             mir_util::dump_mir(
                 tcx,
                 pass_num,
-                &*pass.name(),
+                &pass_name,
                 &Disambiguator { is_after },
                 source,
                 &mir