From bf26b96dc7506b2f1fac9265489a6f3cd4d99dfc Mon Sep 17 00:00:00 2001 From: Oliver Schneider Date: Tue, 5 Dec 2017 17:06:03 +0100 Subject: [PATCH] Update to latest rustc changes --- .gitignore | 1 + Cargo.toml | 2 +- miri/fn_call.rs | 2 +- miri/lib.rs | 10 +++++----- miri/tls.rs | 2 +- tests/compile-fail/invalid_bool.rs | 4 ++-- tests/compile-fail/match_char.rs | 4 ++-- tests/compile-fail/never_say_never.rs | 2 +- tests/compile-fail/reference_to_packed.rs | 2 +- tests/run-pass/issue-36278-prefix-nesting.rs | 3 +++ 10 files changed, 18 insertions(+), 14 deletions(-) diff --git a/.gitignore b/.gitignore index d32d9eb99afd..dcca7ec10a30 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ tex/*/out *.dot *.mir *.rs.bk +Cargo.lock diff --git a/Cargo.toml b/Cargo.toml index 19ba30eb5486..9d1f615e8d1b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -29,7 +29,7 @@ cargo_metadata = { version = "0.2", optional = true } cargo_miri = ["cargo_metadata"] [dev-dependencies] -compiletest_rs = { version = "0.3", features = ["tmp"] } +compiletest_rs = { version = "0.3.3", features = ["tmp"] } [workspace] exclude = ["xargo", "cargo-miri-test", "rustc_tests"] diff --git a/miri/fn_call.rs b/miri/fn_call.rs index 4c17b4db3307..adb235edb67b 100644 --- a/miri/fn_call.rs +++ b/miri/fn_call.rs @@ -187,7 +187,7 @@ impl<'a, 'tcx> EvalContextExt<'tcx> for EvalContext<'a, 'tcx, super::Evaluator> .to_owned(), ), )?; - let arg_dest = self.eval_lvalue(&mir::Lvalue::Local(arg_local))?; + let arg_dest = self.eval_lvalue(&mir::Place::Local(arg_local))?; self.write_ptr(arg_dest, data, u8_ptr_ty)?; assert!(args.next().is_none(), "__rust_maybe_catch_panic argument has more arguments than expected"); diff --git a/miri/lib.rs b/miri/lib.rs index e5566bfe9471..b03518468b69 100644 --- a/miri/lib.rs +++ b/miri/lib.rs @@ -87,7 +87,7 @@ pub fn eval_main<'a, 'tcx: 'a>( // First argument: pointer to main() let main_ptr = ecx.memory_mut().create_fn_alloc(main_instance); - let dest = ecx.eval_lvalue(&mir::Lvalue::Local(args.next().unwrap()))?; + let dest = ecx.eval_lvalue(&mir::Place::Local(args.next().unwrap()))?; let main_ty = main_instance.def.def_ty(ecx.tcx); let main_ptr_ty = ecx.tcx.mk_fn_ptr(main_ty.fn_sig(ecx.tcx)); ecx.write_value( @@ -99,13 +99,13 @@ pub fn eval_main<'a, 'tcx: 'a>( )?; // Second argument (argc): 1 - let dest = ecx.eval_lvalue(&mir::Lvalue::Local(args.next().unwrap()))?; + let dest = ecx.eval_lvalue(&mir::Place::Local(args.next().unwrap()))?; let ty = ecx.tcx.types.isize; ecx.write_primval(dest, PrimVal::Bytes(1), ty)?; // FIXME: extract main source file path // Third argument (argv): &[b"foo"] - let dest = ecx.eval_lvalue(&mir::Lvalue::Local(args.next().unwrap()))?; + let dest = ecx.eval_lvalue(&mir::Place::Local(args.next().unwrap()))?; let ty = ecx.tcx.mk_imm_ptr(ecx.tcx.mk_imm_ptr(ecx.tcx.types.u8)); let foo = ecx.memory.allocate_cached(b"foo\0"); let ptr_size = ecx.memory.pointer_size(); @@ -261,7 +261,7 @@ impl<'tcx> Machine<'tcx> for Evaluator { let usize = ecx.tcx.types.usize; // First argument: size - let dest = ecx.eval_lvalue(&mir::Lvalue::Local(args.next().unwrap()))?; + let dest = ecx.eval_lvalue(&mir::Place::Local(args.next().unwrap()))?; ecx.write_value( ValTy { value: Value::ByVal(PrimVal::Bytes(size as u128)), @@ -271,7 +271,7 @@ impl<'tcx> Machine<'tcx> for Evaluator { )?; // Second argument: align - let dest = ecx.eval_lvalue(&mir::Lvalue::Local(args.next().unwrap()))?; + let dest = ecx.eval_lvalue(&mir::Place::Local(args.next().unwrap()))?; ecx.write_value( ValTy { value: Value::ByVal(PrimVal::Bytes(align as u128)), diff --git a/miri/tls.rs b/miri/tls.rs index e592478f6f9e..8ec31f00e7f1 100644 --- a/miri/tls.rs +++ b/miri/tls.rs @@ -125,7 +125,7 @@ impl<'a, 'tcx: 'a> EvalContextExt<'tcx> for EvalContext<'a, 'tcx, Evaluator> { let arg_local = self.frame().mir.args_iter().next().ok_or( EvalErrorKind::AbiViolation("TLS dtor does not take enough arguments.".to_owned()), )?; - let dest = self.eval_lvalue(&mir::Lvalue::Local(arg_local))?; + let dest = self.eval_lvalue(&mir::Place::Local(arg_local))?; let ty = self.tcx.mk_mut_ptr(self.tcx.types.u8); self.write_ptr(dest, ptr, ty)?; diff --git a/tests/compile-fail/invalid_bool.rs b/tests/compile-fail/invalid_bool.rs index 9de2630797ec..c30c9b439a46 100644 --- a/tests/compile-fail/invalid_bool.rs +++ b/tests/compile-fail/invalid_bool.rs @@ -1,4 +1,4 @@ fn main() { - let b = unsafe { std::mem::transmute::(2) }; - if b { unreachable!() } else { unreachable!() } //~ ERROR: invalid boolean value read + let b = unsafe { std::mem::transmute::(2) }; //~ ERROR: invalid boolean value read + if b { unreachable!() } else { unreachable!() } } diff --git a/tests/compile-fail/match_char.rs b/tests/compile-fail/match_char.rs index a91c7fef6aa1..4fee6e692bad 100644 --- a/tests/compile-fail/match_char.rs +++ b/tests/compile-fail/match_char.rs @@ -1,7 +1,7 @@ fn main() { assert!(std::char::from_u32(-1_i32 as u32).is_none()); - match unsafe { std::mem::transmute::(-1) } { - 'a' => {}, //~ERROR tried to interpret an invalid 32-bit value as a char: 4294967295 + match unsafe { std::mem::transmute::(-1) } { //~ERROR tried to interpret an invalid 32-bit value as a char: 4294967295 + 'a' => {}, 'b' => {}, _ => {}, } diff --git a/tests/compile-fail/never_say_never.rs b/tests/compile-fail/never_say_never.rs index 6aa4e281818c..71306cc62bf7 100644 --- a/tests/compile-fail/never_say_never.rs +++ b/tests/compile-fail/never_say_never.rs @@ -7,7 +7,7 @@ fn main() { let y = &5; let x: ! = unsafe { - *(y as *const _ as *const !) //~ ERROR tried to access a dead local variable + *(y as *const _ as *const !) //~ ERROR entered unreachable code }; f(x) } diff --git a/tests/compile-fail/reference_to_packed.rs b/tests/compile-fail/reference_to_packed.rs index cc927f879504..064386b3d010 100644 --- a/tests/compile-fail/reference_to_packed.rs +++ b/tests/compile-fail/reference_to_packed.rs @@ -14,6 +14,6 @@ fn main() { x: 42, y: 99, }; - let p = &foo.x; + let p = unsafe { &foo.x }; let i = *p; //~ ERROR tried to access memory with alignment 1, but alignment 4 is required } diff --git a/tests/run-pass/issue-36278-prefix-nesting.rs b/tests/run-pass/issue-36278-prefix-nesting.rs index 95269d0569de..dc807bfde7a3 100644 --- a/tests/run-pass/issue-36278-prefix-nesting.rs +++ b/tests/run-pass/issue-36278-prefix-nesting.rs @@ -22,7 +22,10 @@ fn main() { let size_of_sized; let size_of_unsized; let x: Box> = Box::new(P([0; SZ], P([0; SZ], [0; 0]))); size_of_sized = mem::size_of_val::>(&x); + let align_of_sized = mem::align_of_val::>(&x); let y: Box> = x; size_of_unsized = mem::size_of_val::>(&y); assert_eq!(size_of_sized, size_of_unsized); + assert_eq!(align_of_sized, 1); + assert_eq!(mem::align_of_val::>(&y), 1); }