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
|
|
}
|