| // EMIT_MIR_FOR_EACH_PANIC_STRATEGY | |
| //! Tests that cyclic assignments don't hang DestinationPropagation, and result in reasonable code. | |
| //@ test-mir-pass: DestinationPropagation | |
| fn val() -> i32 { | |
| 1 | |
| } | |
| // EMIT_MIR cycle.main.DestinationPropagation.diff | |
| fn main() { | |
| // CHECK-LABEL: main( | |
| // CHECK: debug x => [[x:_.*]]; | |
| // CHECK: [[x]] = val() | |
| // CHECK-NOT: [[x]] = {{_.*}}; | |
| let mut x = val(); | |
| let y = x; | |
| let z = y; | |
| x = z; | |
| drop(x); | |
| } |