| // Test that the goto chain starting from bb0 is collapsed. |
| |
| fn main() { |
| loop { |
| if bar() { |
| break; |
| } |
| } |
| } |
| |
| #[inline(never)] |
| fn bar() -> bool { |
| true |
| } |
| |
| // END RUST SOURCE |
| // START rustc.main.SimplifyCfg-initial.before.mir |
| // bb0: { |
| // goto -> bb1; |
| // } |
| // bb1: { |
| // falseUnwind -> [real: bb3, cleanup: bb4]; |
| // } |
| // ... |
| // bb11: { |
| // ... |
| // goto -> bb1; |
| // } |
| // END rustc.main.SimplifyCfg-initial.before.mir |
| // START rustc.main.SimplifyCfg-initial.after.mir |
| // bb0: { |
| // falseUnwind -> [real: bb1, cleanup: bb2]; |
| // } |
| // ... |
| // bb5: { |
| // ... |
| // goto -> bb0; |
| // } |
| // END rustc.main.SimplifyCfg-initial.after.mir |
| // START rustc.main.SimplifyCfg-early-opt.before.mir |
| // bb0: { |
| // goto -> bb1; |
| // } |
| // bb1: { |
| // StorageLive(_2); |
| // _2 = const bar() -> bb3; |
| // } |
| // END rustc.main.SimplifyCfg-early-opt.before.mir |
| // START rustc.main.SimplifyCfg-early-opt.after.mir |
| // bb0: { |
| // StorageLive(_2); |
| // _2 = const bar() -> bb1; |
| // } |
| // END rustc.main.SimplifyCfg-early-opt.after.mir |