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