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

    <tr>
        <th>Summary</th>
        <td>
            clang is suboptimal for `(~a ^ b) ? a : (a ^ b)`
        </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 two functions:
```cpp
int foo(int a, int b)
{
 return (~a ^ b) ? a : (a ^ b);
}

int bar(int a, int b)
{
 return ~(a ^ b) ? a : (a ^ b);
}
```

Clang vs GCC:
https://godbolt.org/z/74oKjPaoq

Alive2:
https://alive2.llvm.org/ce/z/DP5a_J

```llvm
define i32 @src(i32 %x, i32 %y) {
0:
  %xor1 = xor i32 %y, %x
  %cmp = icmp eq i32 %xor1, 4294967295
  %sel = select i1 %cmp, i32 %y, i32 0
  %xor2 = xor i32 %sel, %x
  ret i32 %xor2
}
=>
define i32 @tgt(i32 %x, i32 %y) {
0:
  %xor = xor i32 %y, %x
  %cmp = icmp eq i32 %xor, 4294967295
  %sel = select i1 %cmp, i32 4294967295, i32 %x
  ret i32 %sel
}
Transformation seems to be correct!
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJykVM1u4ywUfRq8uWqEAf8tvEiT-pO-2XQx-xG2sUMHmxRw086izz4C58eJOtK0I0XKNT7n3MMxF26t7EchSpTco2Qb8cnttCl_3nFj9MFGtW7fyo0erWyFAbcT0Gml9EGOPbiDhm4aGyf1aBFdI7xFeI1SPP-a_X5ekaODTmtEcl9xRDbgixqR4kjJ7ucCjHCTGQGR_J0DSh4CCBCtgAOia__iso7o_Ym_PRbnfjU3n-j3fqX7iX6nvS7bbxQfe3ix8N9mc05l59w-ZEQqRKpet7VWbqVNj0j1C5EqY_rb0yPXz0ultZIvgvxBg4eXK6VehqNOI45i28eE__h_qXQ26uHzUis6OQqQlABi2JrG5-UfSPIaIpvrtxDIKTB8NgMBqE0MiG7hVZsFYTOLXHDNsA8w6QvxfIJ6ukczUrAizUiRLDhWqMCxQonGgYyPQtfe5hpfeyK3nqxQt66McAsb5PbD0i2iDx8F5Xr3taD-Lacvx7QgXbx-lILP6DqE74aPttNm4H7CwQoxWHAaagGNNkY0DpH45nxFbUnbghY8EmWcYUxTliV5tCt5VtS463jciablnLVJW5M8rtu8oayIm0iWBBMax3GBKSU0X9GcdSnrGGM5S1nNEMNi4FKdj3wkrZ1EmZEso5HitVA2XGOENH4EESH-RjOlx9_VU28Rw0paZy8KTjolygAHacFOtd47OXAFnf9iKf7LmyjF0WRUeTPl0u2metXoAZEqDN78d7c3-imkV4UdWD__fhO_AwAA__930H69">