<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/163128>163128</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[clang-tidy] Incorrect suggestion for readability-simplify-boolean-expr
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang-tidy
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
ChuanqiXu9
</td>
</tr>
</table>
<pre>
Reproducer: https://godbolt.org/z/cKfnavMvb
```
#include <string>
#include <iostream>
struct Foo {
std::string appName;
int maxCopy;
};
int main()
{
std::string app;
Foo fileMeta;
int maxCopy;
bool x = !(app == fileMeta.appName && maxCopy == fileMeta.maxCopy);
}
```
clang-tidy shows:
```
<source>:13:10: warning: Value stored to 'x' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
13 | bool x = !(app == fileMeta.appName && maxCopy == fileMeta.maxCopy);
| ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<source>:13:10: note: Value stored to 'x' during its initialization is never read
13 | bool x = !(app == fileMeta.appName && maxCopy == fileMeta.maxCopy);
| ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<source>:13:14: warning: boolean expression can be simplified by DeMorgan's theorem [readability-simplify-boolean-expr]
13 | bool x = !(app == fileMeta.appName && maxCopy == fileMeta.maxCopy);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| ! || !=
2 warnings generated.
```
But it should be `app != fileMeta.appName || maxCopy != fileMeta.maxCopy)`
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzElUFv8zYPxz8NcyESyFQd1wcf3KQBXrzoDhsw7CpbjKNBkTxJ7tP0sM8-yEmeds3Ww7ZnM4zElsQ_yZ9oUcVoBsfcQPkA5XahpnTwodkcJuV-MT9N9aLz-tR8z2Pweuo5gGzxkNIYQbZAO6Dd4HXnbVr5MADtXoF2_f_3Tj0_PXcg2nyvxeUWLZA0rreTZgS5iSkYN4B8vJkxPqbA6nieiylMfcKd9wjVA4gWETEmnWOQ7VkF1Th-p44M8rrAuIRH9bLx4-k8CNX28iDa86RxQPdA9Tz5ifCbaI5hbyw_cVKX0Rs_eV3nvcUXBLlFoALoXo1jfssDV_vVJWQEWgOtryI3y67iVL_l8QGraHur3LBMRp8wHvyXeX9u8ctN9FPoOXOVbSHzj8h7-kUFN-9Fiz8qOzHG5ANrTB6BqhegCvU04zAponEmGWXNq0rGOzQRHT9zwMBKI5QP52CUU_b0ymGpWenea15tWekfsnCEcnsmVUiEaoPfmtns4Kun80v5iL_-1etTmM4n_gdI_g7QvwPnmzC5-1BgORVWDvllDBxjzrtXDjvGaI6jNXvDGrsTbvnJh0E5oCpiOrAPfMzVldmozliTTsuLxWl5EV1m0f-uuKB8_Bv03ulQgX92QbV5X8c5G5nzpSvjiAM7DiqxXt0eFA9TQpPyITFZnaHDWswsZp0_YHF295XFh2XvWMweFrqRupa1WnBTVGshZUl3tDg0JDXvmUTdsS7qStZ1zz1RL0Slu_W-XpiGBJWFKKRYC3FHq0IVTER7VuW6vK_3cCf4qIxdWft8zP1mYWKcuCnWsqD7hVUd2zh3MqK34xCIcmcLTbZadtMQ4U5YE1N800km2bkHvjMrt_g_1_sQuE8Yp2HgOH-ie3_-Oj-twMUUbPOhT5p0mLpV749Au-z58rccg_-Z-wS0m9OJQLtLRs8N_RYAAP__qKxltA">