From 3f7d620440afee6a2e99b4a2f939e0a72a8e9254 Mon Sep 17 00:00:00 2001 From: Oli Scherer Date: Thu, 11 May 2023 08:33:01 +0000 Subject: [PATCH 1/6] Emit the compiler flags again --- src/tools/miri/tests/compiletest.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/tools/miri/tests/compiletest.rs b/src/tools/miri/tests/compiletest.rs index fe70ab3f45aa5..e6388c563314e 100644 --- a/src/tools/miri/tests/compiletest.rs +++ b/src/tools/miri/tests/compiletest.rs @@ -140,6 +140,8 @@ fn run_tests(mode: Mode, path: &str, target: &str, with_dependencies: bool) -> R "run".into(), // There is no `cargo miri build` so we just use `cargo miri run`. ]; } + + eprintln!(" Compiler: {}", config.program.display()); ui_test::run_tests_generic( config, // The files we're actually interested in (all `.rs` files). From 01937562505363962cf7a5c45a81d82cfe79dd4f Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Fri, 12 May 2023 10:02:01 +0200 Subject: [PATCH 2/6] Preparing for merge from rustc --- src/tools/miri/rust-version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/miri/rust-version b/src/tools/miri/rust-version index 25304fc19f7bc..6ff63155f716d 100644 --- a/src/tools/miri/rust-version +++ b/src/tools/miri/rust-version @@ -1 +1 @@ -65dfca8488d635552eb246eb8e15df646e987cff +699a862a3d4e4a2d5603c93297c0c44021ea72f5 From 97d3e4eba6401bbf88cdd3b0de5d58559da82120 Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Fri, 12 May 2023 10:07:20 +0200 Subject: [PATCH 3/6] fmt --- src/tools/miri/tests/fail/intrinsics/simd-scatter.rs | 3 ++- src/tools/miri/tests/fail/intrinsics/simd-scatter.stderr | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/tools/miri/tests/fail/intrinsics/simd-scatter.rs b/src/tools/miri/tests/fail/intrinsics/simd-scatter.rs index 606a6b2798a08..98b6749c584f9 100644 --- a/src/tools/miri/tests/fail/intrinsics/simd-scatter.rs +++ b/src/tools/miri/tests/fail/intrinsics/simd-scatter.rs @@ -5,7 +5,8 @@ fn main() { unsafe { let mut vec: Vec = vec![10, 11, 12, 13, 14, 15, 16, 17, 18]; let idxs = Simd::from_array([9, 3, 0, 17]); - Simd::from_array([-27, 82, -41, 124]).scatter_select_unchecked( //~ERROR: pointer to 1 byte starting at offset 9 is out-of-bounds + Simd::from_array([-27, 82, -41, 124]).scatter_select_unchecked( + //~^ERROR: pointer to 1 byte starting at offset 9 is out-of-bounds &mut vec, Mask::splat(true), idxs, diff --git a/src/tools/miri/tests/fail/intrinsics/simd-scatter.stderr b/src/tools/miri/tests/fail/intrinsics/simd-scatter.stderr index 6d959af85fa75..a745b61029d15 100644 --- a/src/tools/miri/tests/fail/intrinsics/simd-scatter.stderr +++ b/src/tools/miri/tests/fail/intrinsics/simd-scatter.stderr @@ -2,6 +2,7 @@ error: Undefined Behavior: dereferencing pointer failed: ALLOC has size 9, so po --> $DIR/simd-scatter.rs:LL:CC | LL | / Simd::from_array([-27, 82, -41, 124]).scatter_select_unchecked( +LL | | LL | | &mut vec, LL | | Mask::splat(true), LL | | idxs, From 8556c4d108f3444d0ae080570ab7c2cf4dd5e27c Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Fri, 12 May 2023 13:55:43 +0200 Subject: [PATCH 4/6] bump rustc (no josh changes) --- src/tools/miri/rust-version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/miri/rust-version b/src/tools/miri/rust-version index 6ff63155f716d..42687826b0271 100644 --- a/src/tools/miri/rust-version +++ b/src/tools/miri/rust-version @@ -1 +1 @@ -699a862a3d4e4a2d5603c93297c0c44021ea72f5 +0b795044c6f0854445f1f2bb6443e87848e150d1 From b1574380cc8c8e39362d3923eeb3600d17aa6880 Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Fri, 12 May 2023 14:18:05 +0200 Subject: [PATCH 5/6] opt-level 4 should work again now --- src/tools/miri/ci.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/tools/miri/ci.sh b/src/tools/miri/ci.sh index 76cc2e94927c2..b5b3b211b05f0 100755 --- a/src/tools/miri/ci.sh +++ b/src/tools/miri/ci.sh @@ -45,8 +45,7 @@ function run_tests { # them. Also error locations change so we don't run the failing tests. # We explicitly enable debug-assertions here, they are disabled by -O but we have tests # which exist to check that we panic on debug assertion failures. - #FIXME: Disabled due to . - #MIRIFLAGS="${MIRIFLAGS:-} -O -Zmir-opt-level=4 -Cdebug-assertions=yes" MIRI_SKIP_UI_CHECKS=1 ./miri test -- tests/{pass,panic} + MIRIFLAGS="${MIRIFLAGS:-} -O -Zmir-opt-level=4 -Cdebug-assertions=yes" MIRI_SKIP_UI_CHECKS=1 ./miri test -- tests/{pass,panic} # Also run some many-seeds tests. 64 seeds means this takes around a minute per test. for FILE in tests/many-seeds/*.rs; do From 18fd17d2cd88c8ecd250ca8dbb20a29ad79b30b3 Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Fri, 12 May 2023 14:54:12 +0200 Subject: [PATCH 6/6] run miri tests with MIR opts in rustc CI --- src/bootstrap/test.rs | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/bootstrap/test.rs b/src/bootstrap/test.rs index 854b7f5bd3afa..374b6cafcac21 100644 --- a/src/bootstrap/test.rs +++ b/src/bootstrap/test.rs @@ -613,6 +613,21 @@ impl Step for Miri { builder.run(&mut cargo); } + // Run it again for mir-opt-level 4 to catch some miscompilations. + if builder.config.test_args().is_empty() { + cargo.env("MIRIFLAGS", "-O -Zmir-opt-level=4 -Cdebug-assertions=yes"); + // Optimizations can change backtraces + cargo.env("MIRI_SKIP_UI_CHECKS", "1"); + // Optimizations can change error locations and remove UB so don't run `fail` tests. + cargo.args(&["tests/pass", "tests/panic"]); + + let mut cargo = prepare_cargo_test(cargo, &[], &[], "miri", compiler, target, builder); + { + let _time = util::timeit(&builder); + builder.run(&mut cargo); + } + } + // # Run `cargo miri test`. // This is just a smoke test (Miri's own CI invokes this in a bunch of different ways and ensures // that we get the desired output), but that is sufficient to make sure that the libtest harness @@ -644,8 +659,10 @@ impl Step for Miri { cargo.env("RUST_BACKTRACE", "1"); let mut cargo = Command::from(cargo); - let _time = util::timeit(&builder); - builder.run(&mut cargo); + { + let _time = util::timeit(&builder); + builder.run(&mut cargo); + } } }