From 2149d73358b648ee7c6f9635a123bb8aa6bb2009 Mon Sep 17 00:00:00 2001 From: Matthew Jasper Date: Sat, 1 Dec 2018 15:04:07 +0000 Subject: [PATCH 1/3] Remove unnecessary borrow generation --- src/librustc_mir/dataflow/impls/borrows.rs | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/src/librustc_mir/dataflow/impls/borrows.rs b/src/librustc_mir/dataflow/impls/borrows.rs index 518fbaae6271f..0ceff4aa04898 100644 --- a/src/librustc_mir/dataflow/impls/borrows.rs +++ b/src/librustc_mir/dataflow/impls/borrows.rs @@ -279,20 +279,6 @@ impl<'a, 'gcx, 'tcx> BitDenotation<'tcx> for Borrows<'a, 'gcx, 'tcx> { }); sets.gen(*index); - - // Issue #46746: Two-phase borrows handles - // stmts of form `Tmp = &mut Borrow` ... - match lhs { - Place::Promoted(_) | - Place::Local(..) | Place::Static(..) => {} // okay - Place::Projection(..) => { - // ... can assign into projections, - // e.g., `box (&mut _)`. Current - // conservative solution: force - // immediate activation here. - sets.gen(*index); - } - } } } From 49e52e71de644e3497d32854838e3b99e28ee7c3 Mon Sep 17 00:00:00 2001 From: Matthew Jasper Date: Sat, 29 Dec 2018 11:55:00 +0000 Subject: [PATCH 2/3] Remove unused types from rustc::mir::interpret The types are no longer used with the change to stacked borrows for validation. --- src/librustc/ich/impls_ty.rs | 16 ---------------- src/librustc/mir/interpret/mod.rs | 22 ---------------------- 2 files changed, 38 deletions(-) diff --git a/src/librustc/ich/impls_ty.rs b/src/librustc/ich/impls_ty.rs index 65b8f04e30a12..bab3846fe86e5 100644 --- a/src/librustc/ich/impls_ty.rs +++ b/src/librustc/ich/impls_ty.rs @@ -473,22 +473,6 @@ impl_stable_hash_for!(enum mir::interpret::InboundsCheck { MaybeDead }); -impl_stable_hash_for!(enum mir::interpret::Lock { - NoLock, - WriteLock(dl), - ReadLock(v) -}); - -impl_stable_hash_for!(struct mir::interpret::DynamicLifetime { - frame, - region -}); - -impl_stable_hash_for!(enum mir::interpret::AccessKind { - Read, - Write -}); - impl_stable_hash_for!(enum ty::Variance { Covariant, Invariant, diff --git a/src/librustc/mir/interpret/mod.rs b/src/librustc/mir/interpret/mod.rs index 25a0f0ba489d1..e6a560b2ad7b6 100644 --- a/src/librustc/mir/interpret/mod.rs +++ b/src/librustc/mir/interpret/mod.rs @@ -29,7 +29,6 @@ use mir; use hir::def_id::DefId; use ty::{self, TyCtxt, Instance}; use ty::layout::{self, Size}; -use middle::region; use std::io; use rustc_serialize::{Encoder, Decodable, Encodable}; use rustc_data_structures::fx::FxHashMap; @@ -40,27 +39,6 @@ use ty::codec::TyDecoder; use std::sync::atomic::{AtomicU32, Ordering}; use std::num::NonZeroU32; -#[derive(Clone, Debug, PartialEq, Eq, Hash, RustcEncodable, RustcDecodable)] -pub enum Lock { - NoLock, - WriteLock(DynamicLifetime), - /// This should never be empty -- that would be a read lock held and nobody - /// there to release it... - ReadLock(Vec), -} - -#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, RustcEncodable, RustcDecodable)] -pub struct DynamicLifetime { - pub frame: usize, - pub region: Option, // "None" indicates "until the function ends" -} - -#[derive(Copy, Clone, Debug, PartialEq, Eq, RustcEncodable, RustcDecodable)] -pub enum AccessKind { - Read, - Write, -} - /// Uniquely identifies a specific constant or static. #[derive(Copy, Clone, Debug, Eq, PartialEq, Hash, RustcEncodable, RustcDecodable)] pub struct GlobalId<'tcx> { From afb7c0683415bec312a1ac4679768472fa8ab73b Mon Sep 17 00:00:00 2001 From: Matthew Jasper Date: Sun, 30 Dec 2018 18:39:53 +0000 Subject: [PATCH 3/3] Remove unused nll debug flags --- src/librustc/session/config.rs | 4 ---- src/test/run-pass/generator/yield-subtype.rs | 1 - src/test/ui/span/dropck_vec_cycle_checked.nll.stderr | 6 +++--- src/test/ui/span/dropck_vec_cycle_checked.rs | 5 ----- src/test/ui/span/dropck_vec_cycle_checked.stderr | 12 ++++++------ 5 files changed, 9 insertions(+), 19 deletions(-) diff --git a/src/librustc/session/config.rs b/src/librustc/session/config.rs index e58c9d75a9db2..b839980f2574e 100644 --- a/src/librustc/session/config.rs +++ b/src/librustc/session/config.rs @@ -1309,12 +1309,8 @@ options! {DebuggingOptions, DebuggingSetter, basic_debugging_options, "Disable the instrumentation pre-inliner, useful for profiling / PGO."), relro_level: Option = (None, parse_relro_level, [TRACKED], "choose which RELRO level to use"), - nll_subminimal_causes: bool = (false, parse_bool, [UNTRACKED], - "when tracking region error causes, accept subminimal results for faster execution."), nll_facts: bool = (false, parse_bool, [UNTRACKED], "dump facts from NLL analysis into side files"), - disable_nll_user_type_assert: bool = (false, parse_bool, [UNTRACKED], - "disable user provided type assertion in NLL"), nll_dont_emit_read_for_match: bool = (false, parse_bool, [UNTRACKED], "in match codegen, do not include FakeRead statements (used by mir-borrowck)"), dont_buffer_diagnostics: bool = (false, parse_bool, [UNTRACKED], diff --git a/src/test/run-pass/generator/yield-subtype.rs b/src/test/run-pass/generator/yield-subtype.rs index c00662e6c0121..c38524857b4a2 100644 --- a/src/test/run-pass/generator/yield-subtype.rs +++ b/src/test/run-pass/generator/yield-subtype.rs @@ -3,7 +3,6 @@ #![allow(dead_code)] // revisions:lexical nll -//[nll]compile-flags: -Z disable-nll-user-type-assert #![cfg_attr(nll, feature(nll))] #![feature(generators)] diff --git a/src/test/ui/span/dropck_vec_cycle_checked.nll.stderr b/src/test/ui/span/dropck_vec_cycle_checked.nll.stderr index 3d9c9354769a4..05692515af846 100644 --- a/src/test/ui/span/dropck_vec_cycle_checked.nll.stderr +++ b/src/test/ui/span/dropck_vec_cycle_checked.nll.stderr @@ -1,5 +1,5 @@ error[E0597]: `c2` does not live long enough - --> $DIR/dropck_vec_cycle_checked.rs:103:24 + --> $DIR/dropck_vec_cycle_checked.rs:98:24 | LL | c1.v[0].v.set(Some(&c2)); | ^^^ borrowed value does not live long enough @@ -13,7 +13,7 @@ LL | } = note: values in a scope are dropped in the opposite order they are defined error[E0597]: `c3` does not live long enough - --> $DIR/dropck_vec_cycle_checked.rs:105:24 + --> $DIR/dropck_vec_cycle_checked.rs:100:24 | LL | c1.v[1].v.set(Some(&c3)); | ^^^ borrowed value does not live long enough @@ -27,7 +27,7 @@ LL | } = note: values in a scope are dropped in the opposite order they are defined error[E0597]: `c1` does not live long enough - --> $DIR/dropck_vec_cycle_checked.rs:111:24 + --> $DIR/dropck_vec_cycle_checked.rs:106:24 | LL | c3.v[0].v.set(Some(&c1)); | ^^^ borrowed value does not live long enough diff --git a/src/test/ui/span/dropck_vec_cycle_checked.rs b/src/test/ui/span/dropck_vec_cycle_checked.rs index 4f627c4270ca5..c80e0386e6a15 100644 --- a/src/test/ui/span/dropck_vec_cycle_checked.rs +++ b/src/test/ui/span/dropck_vec_cycle_checked.rs @@ -1,12 +1,7 @@ -// compile-flags: -Z nll-subminimal-causes -// (Work around rust-lang/rust#49998 by opting into nll-subminimal-causes.) - // Reject mixing cyclic structure and Drop when using Vec. // // (Compare against compile-fail/dropck_arr_cycle_checked.rs) - - use std::cell::Cell; use id::Id; diff --git a/src/test/ui/span/dropck_vec_cycle_checked.stderr b/src/test/ui/span/dropck_vec_cycle_checked.stderr index 3a5214446119a..35e4314d0c66f 100644 --- a/src/test/ui/span/dropck_vec_cycle_checked.stderr +++ b/src/test/ui/span/dropck_vec_cycle_checked.stderr @@ -1,5 +1,5 @@ error[E0597]: `c2` does not live long enough - --> $DIR/dropck_vec_cycle_checked.rs:103:25 + --> $DIR/dropck_vec_cycle_checked.rs:98:25 | LL | c1.v[0].v.set(Some(&c2)); | ^^ borrowed value does not live long enough @@ -10,7 +10,7 @@ LL | } = note: values in a scope are dropped in the opposite order they are created error[E0597]: `c3` does not live long enough - --> $DIR/dropck_vec_cycle_checked.rs:105:25 + --> $DIR/dropck_vec_cycle_checked.rs:100:25 | LL | c1.v[1].v.set(Some(&c3)); | ^^ borrowed value does not live long enough @@ -21,7 +21,7 @@ LL | } = note: values in a scope are dropped in the opposite order they are created error[E0597]: `c2` does not live long enough - --> $DIR/dropck_vec_cycle_checked.rs:107:25 + --> $DIR/dropck_vec_cycle_checked.rs:102:25 | LL | c2.v[0].v.set(Some(&c2)); | ^^ borrowed value does not live long enough @@ -32,7 +32,7 @@ LL | } = note: values in a scope are dropped in the opposite order they are created error[E0597]: `c3` does not live long enough - --> $DIR/dropck_vec_cycle_checked.rs:109:25 + --> $DIR/dropck_vec_cycle_checked.rs:104:25 | LL | c2.v[1].v.set(Some(&c3)); | ^^ borrowed value does not live long enough @@ -43,7 +43,7 @@ LL | } = note: values in a scope are dropped in the opposite order they are created error[E0597]: `c1` does not live long enough - --> $DIR/dropck_vec_cycle_checked.rs:111:25 + --> $DIR/dropck_vec_cycle_checked.rs:106:25 | LL | c3.v[0].v.set(Some(&c1)); | ^^ borrowed value does not live long enough @@ -54,7 +54,7 @@ LL | } = note: values in a scope are dropped in the opposite order they are created error[E0597]: `c2` does not live long enough - --> $DIR/dropck_vec_cycle_checked.rs:113:25 + --> $DIR/dropck_vec_cycle_checked.rs:108:25 | LL | c3.v[1].v.set(Some(&c2)); | ^^ borrowed value does not live long enough