coverage: Regression test for ICE triggered by self-loops
This commit is contained in:
parent
b7dcabe55e
commit
70206f06ca
3 changed files with 98 additions and 0 deletions
35
tests/coverage/let_else_loop.coverage
Normal file
35
tests/coverage/let_else_loop.coverage
Normal file
|
@ -0,0 +1,35 @@
|
|||
LL| |#![feature(coverage_attribute)]
|
||||
LL| |//@ edition: 2021
|
||||
LL| |//@ ignore-test
|
||||
LL| |// Regression test for <https://github.com/rust-lang/rust/issues/122738>.
|
||||
LL| |// These code patterns should not trigger an ICE when allocating a physical
|
||||
LL| |// counter to a node and also one of its in-edges, because that is allowed
|
||||
LL| |// when the node contains a tight loop to itself.
|
||||
LL| |
|
||||
LL| 1|fn loopy(cond: bool) {
|
||||
LL| 1| let true = cond else { loop {} };
|
||||
^0
|
||||
LL| 1|}
|
||||
LL| |
|
||||
LL| |// Variant that also has `loop {}` on the success path.
|
||||
LL| |// This isn't needed to catch the original ICE, but might help detect regressions.
|
||||
LL| 0|fn _loop_either_way(cond: bool) {
|
||||
LL| 0| let true = cond else { loop {} };
|
||||
LL| 0| loop {}
|
||||
LL| |}
|
||||
LL| |
|
||||
LL| |// Variant using regular `if` instead of let-else.
|
||||
LL| |// This doesn't trigger the original ICE, but might help detect regressions.
|
||||
LL| 0|fn _if(cond: bool) {
|
||||
LL| 0| if cond {
|
||||
LL| 0| loop {}
|
||||
LL| | } else {
|
||||
LL| 0| loop {}
|
||||
LL| | }
|
||||
LL| |}
|
||||
LL| |
|
||||
LL| |#[coverage(off)]
|
||||
LL| |fn main() {
|
||||
LL| | loopy(true);
|
||||
LL| |}
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue