<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">