4d8bda335e
To catch at least one pattern that was miscompiled. The test is a minimization of the MCVE reported in <https://github.com/rust-lang/rust/issues/132353>.
26 lines
872 B
Rust
26 lines
872 B
Rust
//! The mir-opt added in <https://github.com/rust-lang/rust/pull/128299> unfortunately seems to lead
|
|
//! to a miscompile (reported in <https://github.com/rust-lang/rust/issues/132353>, minimization
|
|
//! reproduced in this test file).
|
|
//@ revisions: release debug
|
|
// Note: it's not strictly cargo's release profile, but any non-zero opt-level was sufficient to
|
|
// reproduce the miscompile.
|
|
//@[release] compile-flags: -C opt-level=1
|
|
//@[debug] compile-flags: -C opt-level=0
|
|
//@ run-pass
|
|
|
|
fn pop_min(mut score2head: Vec<Option<usize>>) -> Option<usize> {
|
|
loop {
|
|
if let Some(col) = score2head[0] {
|
|
score2head[0] = None;
|
|
return Some(col);
|
|
}
|
|
}
|
|
}
|
|
|
|
fn main() {
|
|
let min = pop_min(vec![Some(1)]);
|
|
println!("min: {:?}", min);
|
|
// panic happened on 1.83.0 beta in release mode but not debug mode.
|
|
let _ = min.unwrap();
|
|
}
|