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

    <tr>
        <th>Summary</th>
        <td>
            [x86] clang is suboptimal for `-1 * !!x` since clang 15.0.0
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang
      </td>
    </tr>

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

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

<pre>
    Consider the following:
https://godbolt.org/z/EYn7Eb4bd
```cpp
int f(int x) {
  return -1 * !!x;
}
```

Clang 14.0.0 and GCC:
```asm
f(int):
        neg     edi
        sbb     eax, eax
        ret
```

>From Clang 15.0.0
```asm
f(int): # @f(int)
        xor     eax, eax
 neg     edi
        sbb     eax, eax
        ret
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysUsuumzAQ_ZphMwoyYwNhwSI3ufQburTBIW4NjmzTS_v1FQ-lTVRVXRQhjjxnHmfwkSGYftS6hvwN8ksip3hzvv56kN67j5Ao132vz24MptMe403j1VnrPszYAz8BuwA73WK8h-VEDVDTu045G1Pne6DmB1Dz_nks35VQ3ZYOBdve9n7fImaMeAU6LjgDVQjl28Ygeh0nP-IhQ6ATAmVA2Qx856G8vDTdj-v3bOXYYyZSljKUY4efzueH6keFDMMW2SUAVY8k3J9R9yvqzjwTQamNkDPQeYUn3uv4F4GNdwPuKvNF5T9JQyCOINhvwaeZs_N_1vQft0i6mncVr2Si66yocs4Y8Ty51axlBStJl1xWZZvLa1aqUh1FxTWpjERiamLEWUVZRoLneVrya8E7LSqZi6OQFQimB2lsau23YbFRYkKYdF2UjB0TK5W2YbUrUbv8OiBanOvrJf-gpj6AYNaEGH51iCba1ePzsYD8gmshmoBhUu4ezSAtXp1HKNiL0wqGwYyt3ku2a0omb-sX25t4m1TaugGoWebucLh790W3EahZ1whAzbrJzwAAAP__XZnvxw">