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

    <tr>
        <th>Summary</th>
        <td>
            clang-15 outputs better code than clang-16
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

    <tr>
      <th>Reporter</th>
      <td>
          k-arrows
      </td>
    </tr>
</table>

<pre>
    Test case is the following trivial function.

```c
int foo(int a, int b)
{
    return a - b ? b - a : b - a ;
}
```

https://godbolt.org/z/MexYMfeK1
https://alive2.llvm.org/ce/z/9Ma_ob

clang15.0.0
```llvm
foo(int, int):                               # @foo(int, int)
        mov     eax, esi
        sub     eax, edi
 ret
```


clang16.0.0
```llvm
foo(int, int): # @foo(int, int)
        xor     eax, eax
        sub esi, edi
        cmovne  eax, esi
        ret
```

If this change is as expected, feel free to close this issue.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJycU02PmzAQ_TXmMgKB-QoHDrtdIVXV3nrpqfLHAG4dHNkmSfvrKwObJuk2qjpCeGDmed6zZ5hzapgQW1I-k_IlYrMfjW2_x8xac3IRN_JH-xmdB8EcgnLgR4TeaG1OahrAW3VUTEM_T8IrMyUkfSHp0_au0vUR67eaPPTGELoLHiP0AwSHE9psgPp5dQAALPrZTsAgBg4k74BDDAxI_nTxnt9gL3cFr1mM3h8cyZ8I7QjtBiO50T4xdiC0-0lo94rnL689fsreS2daHZEmWh_3G0Tghmte2VfDrysJzaYhK5M0Se_4BPz666J_Ux-054veB0ZoDqRI38NejivY3hyXFdk5pKBTt3E385u4fItb9A9O8Fpd9T_q_pX_2dgbfuz8J_8g6ob7ZmJvjhP-XftjiR978KNyIEY2DUufMwd4PqDwKMN-PaKG3iKCNyC0cbgClHMzJpFsc9nkDYuwzapd1mRFVTfR2NZFIRkVdYFVX5SS9XyHQlZNzXmzy2QTqZamNE-LAMmzrEmqTFRpIWpWy7LJakqKFPdM6UsPRkvJtqI030WacdRumV5KJzytfAilYZhtGzAxnwdHilQr593vXbzyGtvlUuOsBDP7w-wdcPQeLQgjg0A2wZZRRbPV7d0sKT_OPBFmT2i3NMG6xAdrvqHwhHYLHUdot9D9FQAA__-RHDz7">