<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/159743>159743</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[CF][Canonicalizer] infinite loop trying to simplify control flow
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
rscottmanley
</td>
</tr>
</table>
<pre>
The following test case will result in a compile-time infinite loop if you run `mlir-opt -canonicalizer`
```
module {
func.func @infloop_() {
%false = arith.constant false
cf.cond_br %false, ^bb1, ^bb2
^bb1: // 2 preds: ^bb0, ^bb2
cf.br ^bb2
^bb2: // 2 preds: ^bb0, ^bb1
cf.br ^bb1
}
}
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyMUtGumzAM_ZrwYhWFlEB54KH3dnzB3q9CcEomk6Ak3Kr7-incrtO6l0mWbR3bB3J0VIz26hB7Jt-YvBRqS7MPfYjap7QoR3gvRj_d--8zgvFE_mbdFRLGBFpFhJslgoBxowTWgQLtl9USHpJdEKwz1tmEQN6vYA3c_QZhc8AavpANB78mOGjlvLNakf2JgTWc8XOOhj-Cnxc_bYTA2jfGzwBmc7rMCVjNrTOZ_YOJExPdcweACWkURQR2vIAKNs2l9i4m5RLsg8eeNhmfPsbwPGHiHZj8No7VsxP79gM85lYMTAwgYA04xQztQ_5ysfNn6hcS8X8k1b8kO8TaS9boK_9Wqpj649QdO1VgX7XyJFrZNnUx9zhVdWN0LSVWqBpulFLjNI5KVIpLYwrbCy4k76qOd7LhdamFaZranFCPapqEZjXHRVkqiT6X0odrYWPcsK9k19bHgtSIFHcXCeHwBvuUCZFNFfp8dBi3a2Q1JxtT_EOTbKLdfu8Dk5dc_3KDvLyYKIX77kAP0S4rWXMH7V0KnsCQvxVboH5Oac1ifql7tWnexlL7hYkhf_dRDmvwP1AnJob9byMTw-M5n734FQAA___CCfFq">