| // Test that we correctly generate StorageDead statements for while loop |
| // conditions on all branches |
| |
| fn get_bool(c: bool) -> bool { |
| c |
| } |
| |
| fn while_loop(c: bool) { |
| while get_bool(c) { |
| if get_bool(c) { |
| break; |
| } |
| } |
| } |
| |
| fn main() { |
| while_loop(false); |
| } |
| |
| // END RUST SOURCE |
| |
| // START rustc.while_loop.PreCodegen.after.mir |
| // bb0: { |
| // StorageLive(_2); |
| // StorageLive(_3); |
| // _3 = _1; |
| // _2 = const get_bool(move _3) -> bb1; |
| // } |
| // bb1: { |
| // StorageDead(_3); |
| // switchInt(_2) -> [false: bb6, otherwise: bb2]; |
| // } |
| // bb2: { |
| // StorageLive(_4); |
| // StorageLive(_5); |
| // _5 = _1; |
| // _4 = const get_bool(move _5) -> bb3; |
| // } |
| // bb3: { |
| // StorageDead(_5); |
| // switchInt(_4) -> [false: bb4, otherwise: bb5]; |
| // } |
| // bb4: { |
| // StorageDead(_4); |
| // StorageDead(_2); |
| // goto -> bb0; |
| // } |
| // bb5: { |
| // StorageDead(_4); |
| // goto -> bb6; |
| // } |
| // bb6: { |
| // StorageDead(_2); |
| // return; |
| // } |
| // END rustc.while_loop.PreCodegen.after.mir |