mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-27 17:24:06 +00:00
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
This commit is contained in:
commit
7d59fa3d23
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -1 +1 @@
|
||||
65dfca8488d635552eb246eb8e15df646e987cff
|
||||
0b795044c6f0854445f1f2bb6443e87848e150d1
|
||||
|
@ -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).
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user