<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/150229>150229</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[GVN] hits assertion "Cannot split critical edge from IndirectBrInst" in llvm::SplitKnownCriticalEdge
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
tetzank
</td>
</tr>
</table>
<pre>
The gvn pass cannot handle the indirectbr instruction with more than one destination. It hits an assertion in llvm::SplitKnownCriticalEdge trying to add a "dead" block after the indirectbr.
The newgvn pass works fine.
Reproducer:
```llvm
define void @foo(i1 %cmp) {
first:
br i1 %cmp, label %exit, label %second
second:
br i1 %cmp, label %ibr, label %exit ; cmp must be false to reach this, branch to ibr never taken
ibr: ; this block is dead
indirectbr ptr blockaddress(@foo, %exit), [label %exit, label %exit] ; double label required, works with just one
exit:
ret void
}
```
`opt --passes=gvn -S minimal.ll`
Related Bug: https://github.com/llvm/llvm-project/issues/49237
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJycVE1v4zYQ_TXUZRCDpqQoOuggJ3URFOhht-idH2OJG4pUyZHd7a8vSLnJtkXRooABi5yvN2_mUaZkJ484sPbE2pdKbjSHOBDSb9K_VSqYr8NPM8J09bDKlEBL7wPBLL1xCDQjWG9sRE0qgvWJ4qbJBg83SzMsIWYn6SF4BIOJrJfZfIBXgtlSAulBpoSxBFkPzl0XVo-sHj-vztIPPtz8c7RktXTfmQmB4lfrJ6AA0hiQwIQwKA0TApQL-g3khTD-BdqB8TH34fH23sotxLcEF-sxWxkfP-Eag9k0xgyAj-yR77-CiY8GszNcgzXAGn4JgYknewQmWr2sTPTAuhPj48XGRHsKgEzLh8szOKnQ5TP-aulPFwl18GaHcv_-txxWxb_lBFafQC8rLFsiUAgX6RJmviJKPQPNNuUgFaXPxwBWRfB4zaTJN_Q7gpy6HkuyHHHn1iYoZPPx27mvFHe7NCZiSkw8_cHP80erfTm1p39moFy0L6WoCZtyeLdF_GWzEU323sdW1utL7jB43BGX6DtjEanMKVu6l29nufuyRx5WgoeHvAmYWP2S1-LhMyzW20W6g3Pvvp_QSUIDp23KjMxEa8p1xJmJ82Rp3tRBh4WJc9mT_e9hjeELamLibFPaMDFxbnpRd5UZatPXvaxwOHZtLZ5E09XVPKimV_WRd81Fde1R49Fgrx7ro-5a1SuNlR0EFy3vRH1s2qauD7znvJOd6Z_qR9HqjjUcF2kz-OtyCHGqSunh2HIh-qpQmYrShfB4g2JlQmThx6GgVtuUWMOdTZQ-0pAlV56I73_-Mc9nF-67apkQz_uzkLJkQd_lCpj1eolhgdf7spziq0-UtfofpF5t0Q3_n-5729dB_B4AAP__JWeSXQ">