diff options
| author | bors <bors@rust-lang.org> | 2018-07-23 06:44:15 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2018-07-23 06:44:15 +0000 |
| commit | 3900bf8ae3aafdd3ab13a0e6400d47bc5cb2e121 (patch) | |
| tree | ec441a6af1d05d9044db6ef39c8686eb1d9fe97c | |
| parent | 210d61f05c8c2f9e58f167eb28ab9d8bbef4968b (diff) | |
| parent | 1d912bfb422b187d929a2bc3542556a78b19257d (diff) | |
| download | rust-3900bf8ae3aafdd3ab13a0e6400d47bc5cb2e121.tar.gz rust-3900bf8ae3aafdd3ab13a0e6400d47bc5cb2e121.zip | |
Auto merge of #52612 - matthewjasper:remove-unnecessary-flow, r=nikomatsakis
Don't keep the possibly initialized flow around longer than needed The possibly initialized flow isn't used after liveness is computed, so don't keep it around. Locally this is about a 10% time win for tuple-stress (which is spending a lot of time calculating flows now that it's not spending so much on liveness). r? @nikomatsakis
| -rw-r--r-- | src/librustc_mir/borrow_check/flows.rs | 18 | ||||
| -rw-r--r-- | src/librustc_mir/borrow_check/mod.rs | 2 |
2 files changed, 1 insertions, 19 deletions
diff --git a/src/librustc_mir/borrow_check/flows.rs b/src/librustc_mir/borrow_check/flows.rs index 5631356dc1e..6dfcece3071 100644 --- a/src/librustc_mir/borrow_check/flows.rs +++ b/src/librustc_mir/borrow_check/flows.rs @@ -26,7 +26,7 @@ use dataflow::move_paths::HasMoveData; use dataflow::Borrows; use dataflow::{EverInitializedPlaces, MovingOutStatements}; use dataflow::{FlowAtLocation, FlowsAtLocation}; -use dataflow::{MaybeInitializedPlaces, MaybeUninitializedPlaces}; +use dataflow::MaybeUninitializedPlaces; use either::Either; use std::fmt; use std::rc::Rc; @@ -34,7 +34,6 @@ use std::rc::Rc; // (forced to be `pub` due to its use as an associated type below.) crate struct Flows<'b, 'gcx: 'tcx, 'tcx: 'b> { borrows: FlowAtLocation<Borrows<'b, 'gcx, 'tcx>>, - pub inits: FlowAtLocation<MaybeInitializedPlaces<'b, 'gcx, 'tcx>>, pub uninits: FlowAtLocation<MaybeUninitializedPlaces<'b, 'gcx, 'tcx>>, pub move_outs: FlowAtLocation<MovingOutStatements<'b, 'gcx, 'tcx>>, pub ever_inits: FlowAtLocation<EverInitializedPlaces<'b, 'gcx, 'tcx>>, @@ -46,7 +45,6 @@ crate struct Flows<'b, 'gcx: 'tcx, 'tcx: 'b> { impl<'b, 'gcx, 'tcx> Flows<'b, 'gcx, 'tcx> { crate fn new( borrows: FlowAtLocation<Borrows<'b, 'gcx, 'tcx>>, - inits: FlowAtLocation<MaybeInitializedPlaces<'b, 'gcx, 'tcx>>, uninits: FlowAtLocation<MaybeUninitializedPlaces<'b, 'gcx, 'tcx>>, move_outs: FlowAtLocation<MovingOutStatements<'b, 'gcx, 'tcx>>, ever_inits: FlowAtLocation<EverInitializedPlaces<'b, 'gcx, 'tcx>>, @@ -54,7 +52,6 @@ impl<'b, 'gcx, 'tcx> Flows<'b, 'gcx, 'tcx> { ) -> Self { Flows { borrows, - inits, uninits, move_outs, ever_inits, @@ -81,7 +78,6 @@ impl<'b, 'gcx, 'tcx> Flows<'b, 'gcx, 'tcx> { macro_rules! each_flow { ($this:ident, $meth:ident($arg:ident)) => { FlowAtLocation::$meth(&mut $this.borrows, $arg); - FlowAtLocation::$meth(&mut $this.inits, $arg); FlowAtLocation::$meth(&mut $this.uninits, $arg); FlowAtLocation::$meth(&mut $this.move_outs, $arg); FlowAtLocation::$meth(&mut $this.ever_inits, $arg); @@ -134,18 +130,6 @@ impl<'b, 'gcx, 'tcx> fmt::Display for Flows<'b, 'gcx, 'tcx> { }); s.push_str("] "); - s.push_str("inits: ["); - let mut saw_one = false; - self.inits.each_state_bit(|mpi_init| { - if saw_one { - s.push_str(", "); - }; - saw_one = true; - let move_path = &self.inits.operator().move_data().move_paths[mpi_init]; - s.push_str(&format!("{}", move_path)); - }); - s.push_str("] "); - s.push_str("uninits: ["); let mut saw_one = false; self.uninits.each_state_bit(|mpi_uninit| { diff --git a/src/librustc_mir/borrow_check/mod.rs b/src/librustc_mir/borrow_check/mod.rs index 62bf2b0abe4..f581b7104a3 100644 --- a/src/librustc_mir/borrow_check/mod.rs +++ b/src/librustc_mir/borrow_check/mod.rs @@ -216,7 +216,6 @@ fn do_mir_borrowck<'a, 'gcx, 'tcx>( &borrow_set, ); let regioncx = Rc::new(regioncx); - let flow_inits = flow_inits; // remove mut let flow_borrows = FlowAtLocation::new(do_dataflow( tcx, @@ -262,7 +261,6 @@ fn do_mir_borrowck<'a, 'gcx, 'tcx>( let mut state = Flows::new( flow_borrows, - flow_inits, flow_uninits, flow_move_outs, flow_ever_inits, |
