| // EMIT_MIR_FOR_EACH_PANIC_STRATEGY | |
| //! Tests that assignment in both branches of an `if` are eliminated. | |
| //@ test-mir-pass: DestinationPropagation | |
| fn val() -> i32 { | |
| 1 | |
| } | |
| fn cond() -> bool { | |
| true | |
| } | |
| // EMIT_MIR branch.foo.DestinationPropagation.diff | |
| fn foo() -> i32 { | |
| // CHECK-LABEL: fn foo( | |
| // CHECK: debug y => [[y:_.*]]; | |
| // CHECK: [[y]] = val() | |
| // CHECK-NOT: [[y]] = {{_.*}}; | |
| let x = val(); | |
| let y = if cond() { | |
| x | |
| } else { | |
| val(); | |
| x | |
| }; | |
| y | |
| } | |
| fn main() { | |
| foo(); | |
| } |