<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/120214>120214</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
-Wtautological-compare should flag tautological pointer bounds checks
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang:diagnostics
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
nikic
</td>
</tr>
</table>
<pre>
`-Wtautological-compare` should report pointer "bounds checks" patterns that are always true/false because unsigned pointer arithmetic cannot overflow.
```
bool test1(const char *ptr, size_t index) {
return ptr + index < ptr; // always false
}
bool test2(const char *ptr, size_t index) {
return ptr + index >= ptr; // always true
}
```
These two are fine though:
```
bool test3(const char *ptr, ssize_t index) {
return ptr + index < ptr; // unknown
}
bool test4(const char *ptr, ssize_t index) {
return ptr + index >= ptr; // unknown
}
```
Idea from https://github.com/llvm/llvm-project/pull/118472#issuecomment-2548141458.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyslNFq4zgUhp9GvjkkWEeKk1z4Imk3sPcLe7nI8omtrSIZ6ajZ7tMPdqeZlskMDFMQGGxZ_3c--GVydkMgasXmKDaPlSk8xtQG9-Rs1cX-pRVNvfqbTeHo4-Cs8SsbL5NJJJoa8hiL7yHRFBPDFF1gSiAQu1hCn8GOZJ-yQITJMFMKGXg0DCYRGH81Lxk4FRJ4OhufCTqypmSCEhas_nakSY7HC7GzYE0IkSE-Uzr7eF2L-jCvpv666kMXowemzFLgzsaQGexoZq7DxEngA2T3P_3D4EJP_wncg9geRX0ASMQlBZh43nx8_Q5CPcxvhDqCwJPA0xv6wjxnbx9fIW7B-EnBfwj1eD970XaLfje8qA9_jZQJ-BoXz2cXCHiMZRiFOvzElvoh9G_qKuEpxGu4a0p_VugdVd_lftT0Z08GzileYGSe8ixn-W9wPJZubeNF4Mn757fHakrxX7Is8DQV7wWepNzpLQpULudCNl4uFHiFG72TWurNbl31rer3am8qauVWaa20bppqbDtDsjnTpre12uiuIdN3O6VquVd9t9_ryrVYo5Yot1KirJs1Yq8aNHbTo6SzRqFruhjn1zPaOqahWiBaiTVKXXnTkc9LrRGtN2EQ6tA7M4SY2dm5k3PfU7tM1pUhC117lzl_O5Ade2rvt_-t-mdvBni_4VbZD1dAVZJvf1nzMlGeRb8O9dzilwAAAP__Oth7CA">