Skip to content

Commit db39ec8

Browse files
qmxspastorino
authored andcommitted
store output in FlowState
1 parent 2cd09f2 commit db39ec8

File tree

2 files changed

+13
-7
lines changed

2 files changed

+13
-7
lines changed

src/librustc_mir/borrow_check/flows.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,21 @@
1414
//! but is not as ugly as it is right now.
1515
1616
use rustc::mir::{BasicBlock, Location};
17+
use rustc::ty::RegionVid;
1718
use rustc_data_structures::indexed_set::Iter;
1819

20+
use borrow_check::location::LocationIndex;
21+
22+
use polonius_engine::Output;
23+
1924
use dataflow::{MaybeInitializedPlaces, MaybeUninitializedPlaces};
2025
use dataflow::{EverInitializedPlaces, MovingOutStatements};
2126
use dataflow::{Borrows};
2227
use dataflow::{FlowAtLocation, FlowsAtLocation};
2328
use dataflow::move_paths::HasMoveData;
2429
use dataflow::move_paths::indexes::BorrowIndex;
2530
use std::fmt;
31+
use std::rc::Rc;
2632

2733
// (forced to be `pub` due to its use as an associated type below.)
2834
crate struct Flows<'b, 'gcx: 'tcx, 'tcx: 'b> {
@@ -31,6 +37,9 @@ crate struct Flows<'b, 'gcx: 'tcx, 'tcx: 'b> {
3137
pub uninits: FlowAtLocation<MaybeUninitializedPlaces<'b, 'gcx, 'tcx>>,
3238
pub move_outs: FlowAtLocation<MovingOutStatements<'b, 'gcx, 'tcx>>,
3339
pub ever_inits: FlowAtLocation<EverInitializedPlaces<'b, 'gcx, 'tcx>>,
40+
41+
/// Polonius Output
42+
pub polonius_output: Option<Rc<Output<RegionVid, BorrowIndex, LocationIndex>>>,
3443
}
3544

3645
impl<'b, 'gcx, 'tcx> Flows<'b, 'gcx, 'tcx> {
@@ -40,13 +49,15 @@ impl<'b, 'gcx, 'tcx> Flows<'b, 'gcx, 'tcx> {
4049
uninits: FlowAtLocation<MaybeUninitializedPlaces<'b, 'gcx, 'tcx>>,
4150
move_outs: FlowAtLocation<MovingOutStatements<'b, 'gcx, 'tcx>>,
4251
ever_inits: FlowAtLocation<EverInitializedPlaces<'b, 'gcx, 'tcx>>,
52+
polonius_output: Option<Rc<Output<RegionVid, BorrowIndex, LocationIndex>>>,
4353
) -> Self {
4454
Flows {
4555
borrows,
4656
inits,
4757
uninits,
4858
move_outs,
4959
ever_inits,
60+
polonius_output,
5061
}
5162
}
5263

src/librustc_mir/borrow_check/mod.rs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,11 @@
1111
//! This query borrow-checks the MIR to (further) ensure it is not broken.
1212
1313
use borrow_check::nll::region_infer::RegionInferenceContext;
14-
use borrow_check::location::LocationIndex;
1514
use rustc::hir;
1615
use rustc::hir::def_id::DefId;
1716
use rustc::hir::map::definitions::DefPathData;
1817
use rustc::infer::InferCtxt;
19-
use rustc::ty::{self, ParamEnv, RegionVid, TyCtxt};
18+
use rustc::ty::{self, ParamEnv, TyCtxt};
2019
use rustc::ty::maps::Providers;
2120
use rustc::lint::builtin::UNUSED_MUT;
2221
use rustc::mir::{AggregateKind, BasicBlock, BorrowCheckResult, BorrowKind};
@@ -46,7 +45,6 @@ use dataflow::move_paths::{IllegalMoveOriginKind, MoveError};
4645
use dataflow::move_paths::{HasMoveData, LookupResult, MoveData, MovePathIndex};
4746
use util::borrowck_errors::{BorrowckErrors, Origin};
4847
use util::collect_writes::FindAssignments;
49-
use polonius_engine::Output;
5048

5149
use self::borrow_set::{BorrowSet, BorrowData};
5250
use self::flows::Flows;
@@ -253,7 +251,6 @@ fn do_mir_borrowck<'a, 'gcx, 'tcx>(
253251
used_mut_upvars: SmallVec::new(),
254252
borrow_set,
255253
dominators,
256-
polonius_output,
257254
};
258255

259256
let mut state = Flows::new(
@@ -262,6 +259,7 @@ fn do_mir_borrowck<'a, 'gcx, 'tcx>(
262259
flow_uninits,
263260
flow_move_outs,
264261
flow_ever_inits,
262+
polonius_output,
265263
);
266264

267265
mbcx.analyze_results(&mut state); // entry point for DataflowResultsConsumer
@@ -376,9 +374,6 @@ pub struct MirBorrowckCtxt<'cx, 'gcx: 'tcx, 'tcx: 'cx> {
376374

377375
/// Dominators for MIR
378376
dominators: Dominators<BasicBlock>,
379-
380-
/// Polonius Output
381-
polonius_output: Option<Rc<Output<RegionVid, BorrowIndex, LocationIndex>>>,
382377
}
383378

384379
// Check that:

0 commit comments

Comments
 (0)