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