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

    <tr>
        <th>Summary</th>
        <td>
            clang is suboptimal for `(a != b) ? a + b : a + a`
        </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>
    Test case:
https://godbolt.org/z/8Tb1jrPaq
```cpp
int f(int a, int b) { return (a != b) ? a + b : a + a; }
```

This test case is based on the function `f_plus` in the following program:
https://github.com/gcc-mirror/gcc/blob/master/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-same-1.c

It is also interesting to note that GCC optimizations differ between `f_plus` and `g_plus`, as shown below.
https://godbolt.org/z/1hTx4jdxY
```cpp
int f_plus(int a, int b)
{
  if (a != b) return a + b;
  return a + a;
}

int g_plus(int a, int b)
{
  if (b != a) return a + b;
  return a + a;
}
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJykVEGPmzwQ_TXDZUQEhuDkwGGzEZ--Ww-59FSNjQFvDaa2abb76ysnZLfdtqutKkWx582A3xu_gbzX_aRUDdsDbI8JLWGwrv6cknP27BNh22_1SfmAkryC4g6yI2R3QwizjxFrgDW9bYU1YWNdD6x5AtbsTiJ_cB_oy7Ucquz6k_N8RfQUsAO2iysBu8e4EcD2CPyAToXFTQhsRwgsh-K45ooGI3JAgVDcrXuC4oDAj6_OWsPL_2nQHsNNBmqPgrxq0U4YBoXdMsmg7YRQZd2n2Sweqgz1mrTG2LOeepyd7R2Nf-qCDsMiNtKOMZAyHbVz1l0DYI0wVgBrRvJBvaCRlF90UFdk08YWBqdU6j0Ba-ZBp3YOqadRpflG_qjq_xCVkPE2tk855UOkGSxONigMAwX87_4e7Rz0qJ8oSvTY6q5TDoUKZ6VeSaapjUB_A-LNkEc_2POEQhl73rzPAPlweiwf2sePbxrgesxvXLA-xQ_XDaLufnXD6pLVEFA8F_-UoOfEi0WeGfR_y0DcGNC_Mbj1I2nrot0Xe0pUnfOsKLMsr8pkqLngkvOuEpkUSsjtjnY5k5IR41VRcJHommWsyBkrs6pkZbmRW-Kct3vaMrkXagtlpkbSZmPM1zFeTaK9X1TNqyLfJYaEMv4y9oxJQ1MPjMUvgKtjfSqW3kOZGe2Df3lD0MGo-lIerecXcfEWGeysw4th3jmyVZYsztRvjFA8dF3S2dkHJQOw5qLBA2suMr4HAAD___IIY9U">