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