From 83a339e5a9cdb9efce75e6c0ed90d630fd4eaf85 Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Sun, 20 Sep 2020 10:26:22 +0200 Subject: [PATCH 1/2] rustup; make sure the iterator moves even with smarter optimizations --- rust-version | 2 +- tests/compile-fail/generator-pinned-moved.rs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/rust-version b/rust-version index d8673b921164..37be5591da6e 100644 --- a/rust-version +++ b/rust-version @@ -1 +1 @@ -7bdb5dee7bac15458b10b148e9e24968e633053e +a3bc0e752fad96f537b73f4e9bc805a73d404f7b diff --git a/tests/compile-fail/generator-pinned-moved.rs b/tests/compile-fail/generator-pinned-moved.rs index 8f873f37a5f8..e0ce5cb7333a 100644 --- a/tests/compile-fail/generator-pinned-moved.rs +++ b/tests/compile-fail/generator-pinned-moved.rs @@ -34,10 +34,10 @@ where fn main() { let mut generator_iterator_2 = { - let mut generator_iterator = GeneratorIteratorAdapter(firstn()); + let mut generator_iterator = Box::new(GeneratorIteratorAdapter(firstn())); generator_iterator.next(); // pin it - generator_iterator // move it + Box::new(*generator_iterator) // move it }; // *deallocate* generator_iterator generator_iterator_2.next(); // and use moved value From 08e076c658f0c42071c278bf35695e30273bed93 Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Sun, 20 Sep 2020 12:02:04 +0200 Subject: [PATCH 2/2] account for mir-opts masking more errors --- tests/compile-fail/storage_dead_dangling.rs | 4 ++-- tests/compile-fail/validity/transmute_through_ptr.rs | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/tests/compile-fail/storage_dead_dangling.rs b/tests/compile-fail/storage_dead_dangling.rs index bf2503917ccb..ad8e05537e1a 100644 --- a/tests/compile-fail/storage_dead_dangling.rs +++ b/tests/compile-fail/storage_dead_dangling.rs @@ -1,5 +1,5 @@ -// This should fail even without validation -// compile-flags: -Zmiri-disable-validation +// This should fail even without validation, but some MIR opts mask the error +// compile-flags: -Zmiri-disable-validation -Zmir-opt-level=0 static mut LEAK: usize = 0; diff --git a/tests/compile-fail/validity/transmute_through_ptr.rs b/tests/compile-fail/validity/transmute_through_ptr.rs index 6a88fdaea1ee..0ef69efb86e6 100644 --- a/tests/compile-fail/validity/transmute_through_ptr.rs +++ b/tests/compile-fail/validity/transmute_through_ptr.rs @@ -1,4 +1,5 @@ #[repr(u32)] +#[derive(Debug)] enum Bool { True } fn evil(x: &mut Bool) { @@ -9,6 +10,7 @@ fn evil(x: &mut Bool) { fn main() { let mut x = Bool::True; evil(&mut x); - let _y = x; // reading this ought to be enough to trigger validation + let y = x; // reading this ought to be enough to trigger validation //~^ ERROR encountered 0x0000002c at ., but expected a valid enum tag + println!("{:?}", y); // make sure it is used (and not optimized away) }