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

    <tr>
        <th>Summary</th>
        <td>
            [clang-static-analyzer] core.NullDereference false negative with `*(int *)0`
        </td>
    </tr>

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

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

    <tr>
      <th>Reporter</th>
      <td>
          0-0x41
      </td>
    </tr>
</table>

<pre>
    I got a false negative error when compiling the following program with clang(trunk) `--analyze -Xclang -analyzer-stats -Xclang -analyzer-checker=core,debug.ExprInspection` https://godbolt.org/z/YxWK86exG.

case:

```c
void clang_analyzer_eval();

struct a b;
struct a {};

void main()
{
    if (&b == &b)
    {
 clang_analyzer_eval(((&b) + 1) < ((&b) + 2));
        if (((&b) + 1) < ((&b) + 2))
        {
            *(int *)0;
        }
 }
}

```

Compiling and running this case through clang(trunk) shows that `((&b) + 1) < ((&b) + 2)` results in FALSE, while analyzer gives TRUE. Based on the TRUE result, it appears that analyzer does not enter the if branch for analysis (and does not generate a core.NullDereference warning for `*(int *)0`).

In a way, from the user's point of view, this might be seen as a false-negative. Thanks a lot for taking the time to review this case. We hope clang static analyzer will be better. Thanks.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJycVE1v4zYQ_TX0ZWCBoqwPH3SI47gIWvTQbrHtaUFJI4kNRQokZSX76wtStpxkk0PXMOzRfDzNzCMft1Z0CrEk6YGkxw2fXK9NSbf0eRdvKt28lI_QaQccWi4tgsKOO3FGQGO0gblHBbUeRiGF6sD1CK2WUs_-aTS6M3yAWbgeaslVR1jhzKSeCNsDyeh2yxWXL98Rtn-HOFwdZmsdd_YDf91j_YSGJMdaGyTsvsFq6qKH59E8Kjti7YRWJKPQOzdaktwRdiLs1Omm0tJF2nSEnb4Tdvrn-euvRYbPv0SEHgm9W35rbtEXvXKRjC7fenk-a9Es43y7dvUNz1wSVhC2J8nhdbF1Zqr9-qo1sLpIfiD58V1BQB-4UBe4JZRfcgAARAshllVAkiNJjuDtNden3PI_67O4QAQm2AHiYCT38GOIeehXg8Hlc-3jJ6De4LwZbnWyO8IKodxi7ekPr_erWxyrdTPeEvfaeb8eVq4aMJNSy8EVFjz34Hqjp-6D82p7PVtwPXf-6P7_sTMKBu0knQWh4HT3258PhN3D3AuJcCUIOnFGC1_--OshggO32IBW4Vp51wXAlwkHfByRm0tLK0Cj0YLSDlA5NKFUtFAZruoeWm2WTCus79OvYC3oUKHhDoGDv1rR75OURzTYokFVI8zchF15kLCB9wx53_7NbXpUwGHmL77j1ughtDNZNITlFkbtq3ULZ4GzTwksDKLrHVQIFlEBt1fp2V6lJ4IvPVdPPiC1C-04_nSVHycGBKfBoEe9ERvBV4Rej7gwC15fRH3b2yyk9G-t0Dk013dEm6ZMmn2y5xss4yzfMZrQItn0JW1ZVu_TPG5zmhdxzXO-S9s2j7M2bZsdbkTJKEtozCgt2G6XRFWeVnmB6b7hWNG0JjuKAxcykvI8eGHaCGsnLDMaZ_FG8gqlDbrMmMIZQpAw5mXalL5mW02dJTsqhXX2huKEk0HQw6DbZdBVQEl6_Jjed_oeRPsTmjeTkeU7fRWun6qo1gNhJ9_K5W87Gv0v1o6wUxjAEnYKA_4XAAD__45k7wU">