<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/55291>55291</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Missing freeze on fold: (urem X, -1) -> select(X == -1, 0, x)
</td>
</tr>
<tr>
<th>Labels</th>
<td>
miscompilation,
llvm:instcombine
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
RKSimon
</td>
</tr>
</table>
<pre>
https://alive2.llvm.org/ce/z/j9ZLMJ
```
----------------------------------------
define i8 @src(i8 %a0) {
%r = urem i8 %a0, 255
ret i8 %r
}
define i8 @tgt(i8 %a0) {
%c = icmp eq i8 %a0, 255
%r = select i1 %c, i8 0, i8 %a0
ret i8 %r
}
Transformation doesn't verify!
----------------------------------------
define i8 @src(i8 %a0) {
%r = urem i8 %a0, 255
ret i8 %r
}
define i8 @tgt(i8 %a0) {
%f = freeze i8 %a0
%c = icmp eq i8 %f, 255
%r = select i1 %c, i8 0, i8 %f
ret i8 %r
}
Transformation seems to be correct!
```
Noticed while working on Issue #55271
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzdVEtzmzAQ_jXiorEHCWTDgYMTNzN9pIe2h0xvCBZQKpArCafJr-9KJvH0kb6OZQSS9vV9uyshTXtfDd4fHMl2hF_hqLU6Al9rfRzXxvYoaQA_D_jelh_fXL8i6Z6kO7JJlxG3qz98TtYtdGoCqgpK8tTZhvAirLmoU8JLSrYXJzsaZJaSbE9nCyM9G11SLsSjkQW_qOxCbrv_CZDv_S-BmgikmvFA4fNzWE-EHGhoEJdF12CFHukynzx_S--DrSfXGTvWXpmJtgbcRPjW0yNY1d0TzhaH_6bGXQTqLMAD_FCoZ3rQ_WsLur_ugAMYHfWGSqCNsRbDn5vw7Yl_a7xqoKV3g9JA74z9pKaeYoyXzs2AWJkQfLv4Jm2VtWVW1olXXkN1rZwL5ksh0KszusU7iH5FbMNNSGPFQgVXJHux5Iram5B6yD4oL0_pfkGzZLb6u6vcKz_Mct2YETfhQi_T6mDNbYx2pQJZhwskW7JkqCQvoWyhYFkOhRT1Jt_womQd2wAIsWWJriVoVxFxQTgflcPoB6Vj-VAQ2OAUwbKdmpxHvcTzEXRin6iKp5ynIhWsFAXP1yyTBUuhk7loeVtIPEMw1ko__YASW0XOcu4dKrVy3p2VNdaxnwAiH4xfz34wtnr3-r0azZTE9KqY21cyFFGY">