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

    <tr>
        <th>Summary</th>
        <td>
            CSA does not know '!(a>b) && !(c>d) == false' is true in the true branch of ' if (a>b || c>d )'
        </td>
    </tr>

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

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

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

<pre>
    I found a problem that CSA evaluates '!(a>b) && !(c>d) == false' (line 12) to be TRUE and FLASE in the true branch of ' if (a>b || c>d )'. I think CSA should evaluate '!(a>b) && !(c>d) == false' only for one time and the result should be TRUE. 

I run clang (trunk) with options `--analyze  -Xclang -analyzer-stats  -Xclang -analyzer-constraints=range -Xclang  -setup-static-analyzer  -Xclang -analyzer-config  -Xclang  eagerly-assume=false   -Xclang -analyzer-checker=core,debug.ExprInspection`.

https://godbolt.org/z/9G8c3cnrc

Input:
```c
#include <stdint.h>
#include <stdbool.h>
void clang_analyzer_eval(int);

int foo(int a, int b, int c, int d) {
 if (a>b || c>d ){
        // clang_analyzer_eval(a);
        // clang_analyzer_eval(b);
        clang_analyzer_eval((a>b || c>d));
 // clang_analyzer_eval((a>b || c>d) == true);
 clang_analyzer_eval(!(a>b || c>d) == false);
 clang_analyzer_eval(!(a>b) && !(c>d) == false);
 }
}
```
Output:
```bash
<source>:9:9: warning: TRUE [debug.ExprInspection]
        clang_analyzer_eval((a>b || c>d));
 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<source>:11:9: warning: TRUE [debug.ExprInspection]
        clang_analyzer_eval(!(a>b || c>d) == false);
 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<source>:12:9: warning: FALSE [debug.ExprInspection]
        clang_analyzer_eval(!(a>b) && !(c>d) == false);
 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<source>:12:9: warning: TRUE [debug.ExprInspection]
        clang_analyzer_eval(!(a>b) && !(c>d) == false);
```

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy0Vs2O4jgQfpriUgIlNknIIQeGn1FLI620vSvtbeQklcTbxka2073MYZ995QQYZgTT3ag3AmJcrqrvq5-khHOy1UQFJJ8gWU9E7ztji89kmsbSIY7i-aQ09aF4wMb0ukaBe2tKRTv0nfC4elwiPQvVC08OgWXAYmALAXxTAssRWAosxXG3Ar6ph12-Br7GRihHwDIEtlBSE8YsSL3BkvCP3__coNA1br8sHzcoNfqO0NuesLRCVx2aJjhEGW6jR4RsBdkKB0cILAeWzfABfSf104DVdaZX9Rny3YiNVgdsjEWjCb3c0QA1ILTkeuVPjo5EZgjRGqLl-PuAttdYKaHbAN3bXj8FJy_Sd2j2XhrtENJoOhVaqMM3Qpz-NR4_7dip88K7a4LKaOetkNo74GsrdEvnUzh15Pv9oCyrs84NM41sv0uQREtWHabCuX5HwNdDMPCqbkfVE1ng68pYAraqqezb2eafvX3Qbk9VoAhpNLuMSuf93gFfAtsC27amLo3yM2NbYNtvwLb550XFK22rH0Kp970PSuNeGo2f0xnGpa5UXxMCXzlfS-1nHfDNDXFpjLqQPxtZj2n6eqL2NVQOsIXUPpQX_3QJRmqPjTGjGAWwFYZFeVpUp8VYUtlR-dcVfD51vMbw3IAlLkG9SaO8pnH96FWMQ5NdWPils1sWTu0VuvsHa7fMxK9ZOjbqe0y9tfkvyWbrY_7Pi1MFjn9_6_3V-iyF645bfOVMbysKVceX-fGLL8JqqduwHJ6EkHy62kTJ-uNSl2z-feW6ijmO_y_Qd6T5DSReo8Ou0Nkuvzx-IJ97au09xN7F7WNT9X5qP_XMpC54nfNcTKiI0yzKWZYv8klXUMJSkVdRndQZT5MqrbMsT8uozOqGN3k2kQWLGItZzOOI5_N8xpKEqrzmrFksIpHHMI9oJ6SaKfW8C6-WiXSupyLJ53k8UaIk5YZJiDFNLzgIgbEwGNki6EzLvnUwj5R03n234qVXVIT5ojbkUBuPT9q83D1dSDcOOncPPZPequKnF6r0XV_OKrMDtg3Ij7fp3pq_qfLAtgNfB2w7xOO_AAAA__9AcvpZ">