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

    <tr>
        <th>Summary</th>
        <td>
            CSA dose not realize that ( ((void *)0) + 0 ) < ( ((void *)0) + 1 ) is true
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

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

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

<pre>
    Hi, I found a problem that CSA dose not realize that both `( ((void *)0) + 0 ) < ( ((void *)0) + 1 )` and  `( ((void *)0) - 1 ) < ( ((void *)0) - 0 )` are true.  These two expressions' compilation and running results are both true. 

https://godbolt.org/z/os7d8MMWd

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


int foo(int a, int b) {

 clang_analyzer_eval((( (void *)0) == (void *)0)==true);
 clang_analyzer_eval(((( (void *)0))!=((void *)0))==false);
 clang_analyzer_eval(((( (void *)0))+0)==(((void *)0)+0));

 clang_analyzer_eval(((( (void *)0))+0)<(((void *)0)+1));
 clang_analyzer_eval(((( (void *)0))-1)>(((void *)0)-0)); 
 
}
```

Output:
```bash
<source>:9:9: warning: TRUE [debug.ExprInspection]
        clang_analyzer_eval((( (void *)0) == (void *)0)==true);
 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<source>:10:9: warning: TRUE [debug.ExprInspection]
        clang_analyzer_eval(((( (void *)0))!=((void *)0))==false);
 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<source>:11:9: warning: TRUE [debug.ExprInspection]
        clang_analyzer_eval(((( (void *)0))+0)==(((void *)0)+0));
 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<source>:13:9: warning: FALSE [debug.ExprInspection]
        clang_analyzer_eval(((( (void *)0))+0)<(((void *)0)+1));
 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<source>:14:9: warning: FALSE [debug.ExprInspection]
        clang_analyzer_eval(((( (void *)0))-1)>(((void *)0)-0)); 
 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
===-------------------------------------------------------------------------===
 Analyzer timers
===-------------------------------------------------------------------------===
 Total Execution Time: 0.0016 seconds (0.0077 wall clock)

   ---User Time---   --System Time--   --User+System--   ---Wall Time---  --- Name ---
   0.0000 (  0.0%)   0.0010 ( 67.6%)   0.0010 ( 63.3%)   0.0049 ( 63.4%)  Path exploration time
   0.0001 (100.0%)   0.0002 ( 13.7%) 0.0003 ( 19.2%)   0.0025 ( 32.9%)  Syntax-based analysis time
   0.0000 ( 0.0%)   0.0003 ( 18.7%)   0.0003 ( 17.5%)   0.0003 (  3.7%)  Path-sensitive report post-processing time
   0.0001 (100.0%)   0.0015 (100.0%)   0.0016 (100.0%)   0.0077 (100.0%)  Total

5 warnings generated.
Compiler returned: 0
```

Compiled and run:
<img width="851" alt="image" src="https://user-images.githubusercontent.com/35189652/210926522-76b161f8-bdd4-468f-a493-a4280c5cb961.png">

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzEV01z2zYQ_TXQBUMOCRD8OOggyVabmabt1M7kmAHJFYUWAjQA6I8c-ts7AClZtmknVZyEQ9PQw2IfHrBLYrm1olMAc8SWiF3MeO-22sx_Ab3ZGLhPkzSb1bq9n_8qEFnhd3ije9VijvdG1xJ22G25w6urBW61Bay0wwa4FJ9h6Km122KUJ4iUGJESkfJGixYjskCkShCpMCJLnODQoiv8ul3q7VCeYK5a_LrbaDD-gtNooA4uDWBneogxvt6CBexuNYa7vQFrhVYWkQI3ercXkjuhVZiC6ZUSqsMGbC-dDT6C4sERSi5QshieW-f2FtEFImtE1p1uay1drE2HyPozImtti7Z8__5jezrondr3zg8asDwZ7mb8TahQjexbwIgQ61qh4y0i5HkvXfle5eItopcvdNday5P-sFKN5Kr7xBWX95_BfIIbLhEphXJ-zejydKrDUyiHN1oPRpj7kPGNOuxE8WjAC86HG08FAL1A9GKiZ-jwS346rVf9T1OEO_XupoLlyLTh0r4J1fJh9kfbZ3bLI_fXL9-XOVevEKZPCM-jioIbevkSUfSga0yUQ74UF0_i_VT3H72bzIma2-0I0ZXVvWnAk9NFNf7hW258svrm9V8fLjFiyxbqvosv7_bmnbJ7aHxiIzbS4_H63nGK2OW_51yTatPke8p947Q5V_mL4tOfJP68RP4G_dPy6YT89eK3qx-l_3-9VM4WP609-znaz3nLfavwi-GO3uo6ehwnuBiXADuxA2N_FO21dlziyzto-nDAuhY78LuYxEmS5thCo1Vr_TZ4pCjwLZcSN1I3__gFPv02YhxF0QcLJjiJoiggV_fWwW6EAuJNEFkOHSMWffRuj-P843e-A984evcTSJJwrvRtRJh_8Q94OuB5EeeTOI3pIzyrDnh2wP_kbuuPnlKb4azpN-IxuT_clmnylDwhwVlK42LEA0oHtIrJI2vCAk5JXB3wq3vl-F1UcwstDrlghZ3gH8Q8ox-JyiP9Y7yI2RSOH6YbtEcWlBVO3AA2sNfG4b22Ltob3fjDuOq-fkFS9gKeT-NF8QwPcXkaXuzwjrG4AwWGO2jjoWsVCgQw2IDrjYI2BPArx5lxQHsoJx4ONnQldh2-Fa3bhs8KKVmKCMFcuuG32PEOPGJNMyCPa4zegomCkY074bZ97ZFGKwfKxY3eIbKmLC2rnBFE1iRNKpIzQqIir9M83ZRR3bZZlOXlJuJZRSOekTJpWFNXeRrvVedLjUO5MGvntK1oxWcwT_OCVFWRFnS2nRcsZTmFpKrqipS8qaGsqqzk9aasWM03MzEnCaFJmuSeP6VxWZKybVOWZQUjjBUoS2DHhYylvNn5imkmrO1hzqqS5TPJa5D2UL6auTeK6r6zKEuksM4-DHPCSZi_XKu-YY2KfdKYHma9kfMnpV_YinH9_dzGfz68_4bGIbIO-iwi6yDxvwAAAP__6vNPSg">