diff options
| author | Ariel Ben-Yehuda <ariel.byd@gmail.com> | 2016-06-07 22:02:08 +0300 |
|---|---|---|
| committer | Ariel Ben-Yehuda <arielb1@mail.tau.ac.il> | 2016-06-09 15:01:45 +0300 |
| commit | 6405527ded784289b4e77d531b57e010cd5fae52 (patch) | |
| tree | 8f10a6ed5cf73041204d6acb1466fef42258efad /src/librustc_mir/transform | |
| parent | e3af9fa4906594ba22015e549cf8bfc3201dec1b (diff) | |
| download | rust-6405527ded784289b4e77d531b57e010cd5fae52.tar.gz rust-6405527ded784289b4e77d531b57e010cd5fae52.zip | |
add a cache for MIR predecessors
Diffstat (limited to 'src/librustc_mir/transform')
| -rw-r--r-- | src/librustc_mir/transform/add_call_guards.rs | 13 | ||||
| -rw-r--r-- | src/librustc_mir/transform/simplify_cfg.rs | 11 |
2 files changed, 4 insertions, 20 deletions
diff --git a/src/librustc_mir/transform/add_call_guards.rs b/src/librustc_mir/transform/add_call_guards.rs index dee9227fd9b..63e975128c7 100644 --- a/src/librustc_mir/transform/add_call_guards.rs +++ b/src/librustc_mir/transform/add_call_guards.rs @@ -11,7 +11,6 @@ use rustc::ty::TyCtxt; use rustc::mir::repr::*; use rustc::mir::transform::{MirPass, MirSource, Pass}; -use rustc::mir::traversal; use rustc_data_structures::indexed_vec::{Idx, IndexVec}; use pretty; @@ -40,16 +39,8 @@ pub struct AddCallGuards; impl<'tcx> MirPass<'tcx> for AddCallGuards { fn run_pass<'a>(&mut self, tcx: TyCtxt<'a, 'tcx, 'tcx>, src: MirSource, mir: &mut Mir<'tcx>) { - let mut pred_count = IndexVec::from_elem(0u32, mir.basic_blocks()); - - // Build the precedecessor map for the MIR - for (_, data) in traversal::preorder(mir) { - if let Some(ref term) = data.terminator { - for &tgt in term.successors().iter() { - pred_count[tgt] += 1; - } - } - } + let pred_count: IndexVec<_, _> = + mir.predecessors().iter().map(|ps| ps.len()).collect(); // We need a place to store the new blocks generated let mut new_blocks = Vec::new(); diff --git a/src/librustc_mir/transform/simplify_cfg.rs b/src/librustc_mir/transform/simplify_cfg.rs index fcc82249953..9cee6b11c07 100644 --- a/src/librustc_mir/transform/simplify_cfg.rs +++ b/src/librustc_mir/transform/simplify_cfg.rs @@ -67,15 +67,8 @@ impl<'l, 'tcx> MirPass<'tcx> for SimplifyCfg<'l> { impl<'l> Pass for SimplifyCfg<'l> {} fn merge_consecutive_blocks(mir: &mut Mir) { - // Build the precedecessor map for the MIR - let mut pred_count = IndexVec::from_elem(0u32, mir.basic_blocks()); - for (_, data) in traversal::preorder(mir) { - if let Some(ref term) = data.terminator { - for &tgt in term.successors().iter() { - pred_count[tgt] += 1; - } - } - } + let mut pred_count: IndexVec<_, _> = + mir.predecessors().iter().map(|ps| ps.len()).collect(); loop { let mut changed = false; |
