29 lines
555 B
Rust
29 lines
555 B
Rust
|
// compile-flags: -C opt-level=3
|
||
|
|
||
|
#![crate_type = "lib"]
|
||
|
|
||
|
// Verify that we don't miscompile this even if rustc didn't apply the trivial loop detection to
|
||
|
// insert the sideeffect intrinsic.
|
||
|
|
||
|
fn infinite_loop() -> u8 {
|
||
|
let mut x = 0;
|
||
|
// CHECK-NOT: sideeffect
|
||
|
loop {
|
||
|
if x == 42 {
|
||
|
x = 0;
|
||
|
} else {
|
||
|
x = 42;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// CHECK-LABEL: @test
|
||
|
#[no_mangle]
|
||
|
fn test() -> u8 {
|
||
|
// CHECK-NOT: unreachable
|
||
|
// CHECK: br label %{{.+}}
|
||
|
// CHECK-NOT: unreachable
|
||
|
let x = infinite_loop();
|
||
|
x
|
||
|
}
|