// compile-flags: -Z identify_regions // Tests to make sure we correctly generate falseUnwind edges in loops fn main() { // Exit early at runtime. Since only care about the generated MIR // and not the runtime behavior (which is exercised by other tests) // we just bail early. Without this the test just loops infinitely. if true { return; } loop { let x = 1; continue; } } // END RUST SOURCE // START rustc.main.SimplifyCfg-qualify-consts.after.mir // ... // bb1 (cleanup): { // resume; // } // ... // bb3: { // Entry into the loop // _1 = (); // StorageDead(_2); // StorageDead(_1); // StorageLive(_4); // goto -> bb5; // } // ... // bb5: { // The loop_block // falseUnwind -> [real: bb6, cleanup: bb1]; // } // bb6: { // The loop body (body_block) // StorageLive(_6); // _6 = const 1i32; // FakeRead(ForLet, _6); // StorageDead(_6); // goto -> bb5; // } // ... // END rustc.main.SimplifyCfg-qualify-consts.after.mir