<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/59887>59887</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            correlated value propagation misoptimizing @llvm.abs.i1
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            miscompilation,
            llvm:optimizations
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          regehr
      </td>
    </tr>
</table>

<pre>
    when this function is invoked as `f(1,1)`  the abs call returns 1 and then we select the true branch so the return value must be 1:

```llvm
define i1 @f(i1 %0, i1 %1) {
  %3 = call i1 @llvm.abs.i1(i1 %0, i1 false)
  %4 = select i1 %1, i1 %3, i1 false
 ret i1 %4
}

declare i1 @llvm.abs.i1(i1, i1 immarg) #0

attributes #0 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
```

however, CVP is incorrectly transforming it to return a constant 0:

https://alive2.llvm.org/ce/z/s5vlDP

cc @nunoplopes 
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx0U02P6yoM_TVkY92KkO9FFndaZX1Xb-8Qt-ENgQhIq86vf4K0M515ulLVIJtjzjm20Xt1MUQ9q95YdcpwC7N1vaMLzS4b7XTvbzMZCLPycN6MDMoaUB6Uudp3mgA9sJqfmWhzJo45Ex2rOUCYCXD0IFFrcBQ2ZzzkgGaKKQM3Ak-aZEg3g9sIRodGzuBtCu0YuKLeCJbNBxgJclb8ZvzE-PO_5vtP6-uyhyY6K0OgcmBlohVPouJMHGE_Ro7Amrf9PsRQAaw47Vx3YKx3wNEfVP6_EmfUnqLOL3yZ8A9Bn688Hyy-AXeUo-fF8iGlOb0qm0hqdPQXOo-CalnQXZIcUfBXOIbg1LgF8imV6LHmDYyNIkeU72Ds2RGBsf5uJBi7mZsyE_iV5KYx4KgJbkrrRyMWWqy7M9Eaa2h38PSjCa8EZnujK7lI9PjPn31gpHWOZNB3CA6NP1u3KHMBFSDYZ78RpDU-oAnAfzR7DmH1MSYGJgbU6krikJyx0YRBEhPDBxODr6769OcVKmV00WzGrtqu5CGb-mLqig4z6vO6KfKurqo6m_uuzvM6L8aSxupcygInrJFG5DVH2bRdpnrBRcFz3uZ12eX1oS1bwkbyimPRCM5ZyWlBpT-pZcr7jfqqa9sm0ziS9mnbhFiUl3ZZlca4VUwIJo5MiDTMxW-7BrWoj5TzMVmdMtfH5K9xu_g4FsoH__VOUEFTn1zWGGh6LM_q7IqXVAYW5R9lo_PfJyvbnO6_m3xRYd7Gg7QLE0OitX9-rc7-SzIwMSRxnokh6fsvAAD__5UCT9w">