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

    <tr>
        <th>Summary</th>
        <td>
            Missed optimization: -(var_9 + var_1 + var_9)  Clang16 vs Clang10
        </td>
    </tr>

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

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

    <tr>
      <th>Reporter</th>
      <td>
          ZY546
      </td>
    </tr>
</table>

<pre>
    Hello, I noticed that for this test case, Clang10 can recognize the available expression `var_9 + var_1`, but Clang16 missed this optimization.
Test code: https://godbolt.org/z/Wb41v7Gda
```c
extern int var_26, var_29;
void test(int var_1, int var_9) {
    var_26 = -(var_9 + var_1 + var_9);
 var_29 = 1 + var_9 + var_1;
}
```


Clang16 -O3:
```asm
test(int, int):                              // @test(int, int)
        adrp    x8, :got:var_26
        adrp    x11, :got:var_29
        add     w9, w0, w1, lsl #1
        add     w10, w0, w1
        neg     w9, w9
        add     w10, w10, #1
        ldr x8, [x8, :got_lo12:var_26]
        ldr     x11, [x11, :got_lo12:var_29]
        str     w9, [x8]
        str     w10, [x11]
        ret
```
Clang10 -O3:
```asm
test(int, int): // @test(int, int)
        add     w8, w0, w1
 add     w11, w8, w1
        adrp    x9, var_26
        adrp x10, var_29
        add     w8, w8, #1              // =1
        neg w11, w11
        str     w11, [x9, :lo12:var_26]
        str     w8, [x10, :lo12:var_29]
        ret
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJycVUuP2jwU_TU3GwtkO08vsoBBfF8XVTeVqnYzchJPcGViFJtH59dXdh4EAlO1EcI2nHOfx7ncGFk3QuQQryHeBPxod7rNf3yPoyQodPUr_18opYG-oE-o0VaWokJ2xy160y2yO2mQFcaikhvhQC-KNzXBqOQNakWp60a-C2R3AvETl4oXSiBxObTCGKkbBAk-8faVIaBr5HYEEuzsFEfb20rQXhrjvUqD9MHKvXznVupmCXgDePXV-9eVgHCFdtYeDIQroFug21pXhVZ2qdsa6PYd6PZbEZFT-l_FO67z5j9ldxYXK9oGycb6aGjiYvE7BuG6w5y0rHzSQLMBSBxuODCgDEHawxFCvS0E4QYtgGZ3KY87Rxzd9G49aQKZVGpAQrq5y6Y_Tr6HWi6-hK46t3Bu9t0v16z6fHxAPoXnT1dqBBF-SB-L4B5etQe3XjKHgHBVawvhqq_1Yyghc-zMbOXXM3PQs1fQ2dOUUQhoSJ7gCb4h3IAaUU-NPnPZm-iWuStVtUO28Xqa9qvShF5zjzdz3jT9eH1TiBs2m7GNbSexd56fYvrQOw_3qFbYh-IaLvq_CervNNNXOnvQq2sbfHF6zKzdvZTYeJ0fie3SFeJDgWVXL67Xj29CuHkgpSFCQp61YWw06_v8sUJG4qiuvpG3xLk45i0NqjysWMh4IHKSMEoTTKI42OWsSpOEJhnlhFOWZTgpcJERTtMUV-FbFsicYhrijKQ4I3EUL0vBKM5iVsbFW1wxDhEWey7VUqnT3r2IA2nMUeRJlCY0ULwQyvjhQ2kjzsj_CZS6WdTmjrMojrWBCCtprLlasdIqkX_uRsN0Kjh5_ekli8bZcjLDyAqOrcrvxoe0u2OxLPUe6NZ57pfFodU_RWmBbn28BujW5_M7AAD__5b864U">