about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2023-05-12 21:49:06 +0000
committerbors <bors@rust-lang.org>2023-05-12 21:49:06 +0000
commit7d59fa3d23f021a18289416caf79fdf050bbc3b0 (patch)
tree9e9302e92e4eadec33aa63dd2e44ff5cffa1696f
parent4a59ba4d54a3ec0d8ea1e82b7eeb5c8b0162de04 (diff)
parent18fd17d2cd88c8ecd250ca8dbb20a29ad79b30b3 (diff)
downloadrust-7d59fa3d23f021a18289416caf79fdf050bbc3b0.tar.gz
rust-7d59fa3d23f021a18289416caf79fdf050bbc3b0.zip
Auto merge of #111506 - RalfJung:miri, r=oli-obk
update Miri

and run mir-opt-level=4 tests in rustc CI so issues like https://github.com/rust-lang/rust/issues/111422 are caught before they land.

r? `@oli-obk` due to the bootstrap changes
-rw-r--r--src/bootstrap/test.rs21
-rwxr-xr-xsrc/tools/miri/ci.sh3
-rw-r--r--src/tools/miri/rust-version2
-rw-r--r--src/tools/miri/tests/compiletest.rs2
-rw-r--r--src/tools/miri/tests/fail/intrinsics/simd-scatter.rs3
-rw-r--r--src/tools/miri/tests/fail/intrinsics/simd-scatter.stderr1
6 files changed, 26 insertions, 6 deletions
diff --git a/src/bootstrap/test.rs b/src/bootstrap/test.rs
index 854b7f5bd3a..374b6cafcac 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);
+        }
     }
 }
 
diff --git a/src/tools/miri/ci.sh b/src/tools/miri/ci.sh
index 76cc2e94927..b5b3b211b05 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 <https://github.com/rust-lang/rust/issues/111422>.
-    #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
diff --git a/src/tools/miri/rust-version b/src/tools/miri/rust-version
index 25304fc19f7..42687826b02 100644
--- a/src/tools/miri/rust-version
+++ b/src/tools/miri/rust-version
@@ -1 +1 @@
-65dfca8488d635552eb246eb8e15df646e987cff
+0b795044c6f0854445f1f2bb6443e87848e150d1
diff --git a/src/tools/miri/tests/compiletest.rs b/src/tools/miri/tests/compiletest.rs
index fe70ab3f45a..e6388c56331 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).
diff --git a/src/tools/miri/tests/fail/intrinsics/simd-scatter.rs b/src/tools/miri/tests/fail/intrinsics/simd-scatter.rs
index 606a6b2798a..98b6749c584 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<i8> = 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 6d959af85fa..a745b61029d 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,