#![feature(coverage_attribute)] //@ edition: 2021 // Regression test for . // These code patterns should not trigger an ICE when allocating a physical // counter to a node and also one of its in-edges, because that is allowed // when the node contains a tight loop to itself. fn loopy(cond: bool) { let true = cond else { loop {} }; } // Variant that also has `loop {}` on the success path. // This isn't needed to catch the original ICE, but might help detect regressions. fn _loop_either_way(cond: bool) { let true = cond else { loop {} }; loop {} } // Variant using regular `if` instead of let-else. // This doesn't trigger the original ICE, but might help detect regressions. fn _if(cond: bool) { if cond { loop {} } else { loop {} } } #[coverage(off)] fn main() { loopy(true); }