Skip to content

Commit 475bde3

Browse files
committed
remove the liveness mode and simplify categorize
Less modes!
1 parent ff7f6d5 commit 475bde3

File tree

2 files changed

+17
-43
lines changed

2 files changed

+17
-43
lines changed

src/librustc_mir/borrow_check/nll/explain_borrow/find_use.rs

+7-25
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ use rustc::mir::visit::{MirVisitable, PlaceContext, Visitor};
1717
use rustc::mir::{Local, Location, Mir};
1818
use rustc::ty::{RegionVid, TyCtxt};
1919
use rustc_data_structures::fx::FxHashSet;
20-
use util::liveness::{self, DefUse, LivenessMode};
20+
use util::liveness::{self, DefUse};
2121

2222
crate fn find<'tcx>(
2323
mir: &Mir<'tcx>,
@@ -32,10 +32,6 @@ crate fn find<'tcx>(
3232
tcx,
3333
region_vid,
3434
start_point,
35-
liveness_mode: LivenessMode {
36-
include_regular_use: true,
37-
include_drops: true,
38-
},
3935
};
4036

4137
uf.find()
@@ -47,7 +43,6 @@ struct UseFinder<'cx, 'gcx: 'tcx, 'tcx: 'cx> {
4743
tcx: TyCtxt<'cx, 'gcx, 'tcx>,
4844
region_vid: RegionVid,
4945
start_point: Location,
50-
liveness_mode: LivenessMode,
5146
}
5247

5348
impl<'cx, 'gcx, 'tcx> UseFinder<'cx, 'gcx, 'tcx> {
@@ -108,7 +103,6 @@ impl<'cx, 'gcx, 'tcx> UseFinder<'cx, 'gcx, 'tcx> {
108103
mir: self.mir,
109104
tcx: self.tcx,
110105
region_vid: self.region_vid,
111-
liveness_mode: self.liveness_mode,
112106
def_use_result: None,
113107
};
114108

@@ -122,7 +116,6 @@ struct DefUseVisitor<'cx, 'gcx: 'tcx, 'tcx: 'cx> {
122116
mir: &'cx Mir<'tcx>,
123117
tcx: TyCtxt<'cx, 'gcx, 'tcx>,
124118
region_vid: RegionVid,
125-
liveness_mode: LivenessMode,
126119
def_use_result: Option<DefUseResult>,
127120
}
128121

@@ -146,23 +139,12 @@ impl<'cx, 'gcx, 'tcx> Visitor<'tcx> for DefUseVisitor<'cx, 'gcx, 'tcx> {
146139
});
147140

148141
if found_it {
149-
match liveness::categorize(context, self.liveness_mode) {
150-
Some(DefUse::Def) => {
151-
self.def_use_result = Some(DefUseResult::Def);
152-
}
153-
154-
Some(DefUse::Use) => {
155-
self.def_use_result = if context.is_drop() {
156-
Some(DefUseResult::UseDrop { local })
157-
} else {
158-
Some(DefUseResult::UseLive { local })
159-
};
160-
}
161-
162-
None => {
163-
self.def_use_result = None;
164-
}
165-
}
142+
self.def_use_result = match liveness::categorize(context) {
143+
Some(DefUse::Def) => Some(DefUseResult::Def),
144+
Some(DefUse::Use) => Some(DefUseResult::UseLive { local }),
145+
Some(DefUse::Drop) => Some(DefUseResult::UseDrop { local }),
146+
None => None,
147+
};
166148
}
167149
}
168150
}

src/librustc_mir/util/liveness.rs

+10-18
Original file line numberDiff line numberDiff line change
@@ -279,9 +279,10 @@ impl<V: Idx> LivenessResult<V> {
279279
pub enum DefUse {
280280
Def,
281281
Use,
282+
Drop,
282283
}
283284

284-
pub fn categorize<'tcx>(context: PlaceContext<'tcx>, mode: LivenessMode) -> Option<DefUse> {
285+
pub fn categorize<'tcx>(context: PlaceContext<'tcx>) -> Option<DefUse> {
285286
match context {
286287
///////////////////////////////////////////////////////////////////////////
287288
// DEFS
@@ -322,13 +323,8 @@ pub fn categorize<'tcx>(context: PlaceContext<'tcx>, mode: LivenessMode) -> Opti
322323
PlaceContext::Inspect |
323324
PlaceContext::Copy |
324325
PlaceContext::Move |
325-
PlaceContext::Validate => {
326-
if mode.include_regular_use {
327-
Some(DefUse::Use)
328-
} else {
329-
None
330-
}
331-
}
326+
PlaceContext::Validate =>
327+
Some(DefUse::Use),
332328

333329
///////////////////////////////////////////////////////////////////////////
334330
// DROP USES
@@ -338,13 +334,8 @@ pub fn categorize<'tcx>(context: PlaceContext<'tcx>, mode: LivenessMode) -> Opti
338334
// uses in drop are special because `#[may_dangle]`
339335
// attributes can affect whether lifetimes must be live.
340336

341-
PlaceContext::Drop => {
342-
if mode.include_drops {
343-
Some(DefUse::Use)
344-
} else {
345-
None
346-
}
347-
}
337+
PlaceContext::Drop =>
338+
Some(DefUse::Drop),
348339
}
349340
}
350341

@@ -434,10 +425,11 @@ where
434425
{
435426
fn visit_local(&mut self, &local: &Local, context: PlaceContext<'tcx>, _: Location) {
436427
if let Some(v_index) = self.map.from_local(local) {
437-
match categorize(context, self.mode) {
428+
match categorize(context) {
438429
Some(DefUse::Def) => self.defs_uses.add_def(v_index),
439-
Some(DefUse::Use) => self.defs_uses.add_use(v_index),
440-
None => (),
430+
Some(DefUse::Use) if self.mode.include_regular_use => self.defs_uses.add_use(v_index),
431+
Some(DefUse::Drop) if self.mode.include_drops => self.defs_uses.add_use(v_index),
432+
_ => (),
441433
}
442434
}
443435
}

0 commit comments

Comments
 (0)