2024-02-16 14:02:50 -06:00
|
|
|
//@ build-pass
|
|
|
|
//@ compile-flags: -Copt-level=0
|
2021-08-15 13:26:14 -05:00
|
|
|
|
|
|
|
// Regression test for #88043: LLVM crash when the RemoveZsts mir-opt pass is enabled.
|
|
|
|
// We should not see the error:
|
|
|
|
// `Basic Block in function '_ZN4main10take_until17h0067b8a660429bc9E' does not have terminator!`
|
|
|
|
|
|
|
|
fn bump() -> Option<usize> {
|
|
|
|
unreachable!()
|
|
|
|
}
|
|
|
|
|
|
|
|
fn take_until(terminate: impl Fn() -> bool) {
|
|
|
|
loop {
|
|
|
|
if terminate() {
|
|
|
|
return;
|
|
|
|
} else {
|
|
|
|
bump();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// CHECK-LABEL: @main
|
|
|
|
fn main() {
|
|
|
|
take_until(|| true);
|
2021-08-16 19:00:00 -05:00
|
|
|
f(None);
|
2021-08-15 13:26:14 -05:00
|
|
|
}
|
2021-08-16 19:00:00 -05:00
|
|
|
|
|
|
|
fn f(_a: Option<String>) -> Option<u32> {
|
|
|
|
loop {
|
|
|
|
g();
|
|
|
|
()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
fn g() -> Option<u32> { None }
|