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

    <tr>
        <th>Summary</th>
        <td>
            CSA does not know "b > 0" under the if condition that "a>0 && b > a"
        </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>
    CSA does not know "b > 0" under the if condition that "a>0 && b > a"

Compiler options: --analyze -Xclang -analyzer-constraints=range  --analyzer-output text -Xclang -analyzer-display-progress -Xclang -analyzer-checker=core,alpha.core,debug.ExprInspection -Xclang -analyzer-config -Xclang eagerly-assume=false 

See it live: https://godbolt.org/z/E5xG4rTna

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

int foo(int a, int b) {
    if ((a<b) && (0 < a)){
 clang_analyzer_eval(!(a<b) == false); 
        clang_analyzer_eval(b > 0);
    }
}
```
Output:
```
ANALYZE (Syntax): <source> foo : 6.2 ms
ANALYZE (Path,  Inline_Regular): <source> foo : 9.6 ms
<source>:7:9: warning: TRUE [debug.ExprInspection]
 clang_analyzer_eval(!(a<b) == false); 
 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<source>:6:10: note: Assuming 'a' is < 'b'
    if ((a<b) && (0 < a)){
         ^~~
<source>:6:9: note: Left side of '&&' is true
    if ((a<b) && (0 < a)){
 ^
<source>:6:19: note: Assuming 'a' is > 0
    if ((a<b) && (0 < a)){
                  ^~~~~
<source>:6:5: note: Taking true branch
 if ((a<b) && (0 < a)){
    ^
<source>:7:9: note: TRUE
 clang_analyzer_eval(!(a<b) == false); 
 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<source>:8:9: warning: UNKNOWN [debug.ExprInspection]
        clang_analyzer_eval(b > 0);
 ^~~~~~~~~~~~~~~~~~~~~~~~~~
<source>:6:10: note: Assuming 'a' is < 'b'
 if ((a<b) && (0 < a)){
         ^~~
<source>:6:9: note: Left side of '&&' is true
    if ((a<b) && (0 < a)){
        ^
<source>:6:19: note: Assuming 'a' is > 0
    if ((a<b) && (0 < a)){
 ^~~~~
<source>:6:5: note: Taking true branch
    if ((a<b) && (0 < a)){
    ^
<source>:8:9: note: UNKNOWN
        clang_analyzer_eval(b > 0);
 ^~~~~~~~~~~~~~~~~~~~~~~~~~
===-------------------------------------------------------------------------===
 Analyzer timers
===-------------------------------------------------------------------------===
 Total Execution Time: 0.0016 seconds (0.0170 wall clock)

   --System Time--   --User+System--   ---Wall Time---  --- Name ---
   0.0010 ( 62.5%)   0.0010 ( 62.5%)   0.0096 ( 56.4%)  Path exploration time
 0.0005 ( 28.7%)   0.0005 ( 28.7%)   0.0073 ( 42.7%)  Syntax-based analysis time
   0.0001 (  8.9%)   0.0001 (  8.9%)   0.0001 (  0.8%) Path-sensitive report post-processing time
   0.0016 (100.0%)   0.0016 (100.0%)   0.0170 (100.0%)  Total

2 warnings generated.
Compiler returned: 0
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzcV09v27gT_TT0ZSBBoqx_Bx-c2C6KX5H-0KTo7l4CShrL3NCkQVJJ3MN-9gUpxXZcO8G26RZYQWipIWfmzeMbh2TG8FYiTkh6QdLZiHV2pfTkHarlUuM2juLxqFLNdnJ5PYVGoQGpLNxJ9QCE0gpIMoeIUAqdbFCDXSHwJdRKNtxyJcGumHUrGUnmERCaEZpB78YIpSSakWja_3up1hsuUIPaOFdDkikEAZNMbL8iBL_VgskWngw6qJU0VjMurSHJTDPZIuwddKA6u-ksWHy0J7wbbjaCbYONVq1GY04lWGF9h5oks1ppJPSSic2KhcNHg1XXhvPHjX4vzQZrX-5JlEve7iaQtajFNmDGdGskyWzJhEE45OEaEbgFwe_RUbCyduO4IHRB6KJVTaWEDZVuCV18JXQxTx_fjfWNZIcx3stNZ51Tb8ui_q2Hb5pwWYuuQSDJpbENlzZckWR-ZrpSShzM3yvegC_n9qnMW7xngtCC0JIkF4dIuLSwVIrQwo0YoZfgBhWhJZB8WAoATjY-QMFIctlP92ohtIgcEOdcunfndQ5D_CxKMiPJDDzPPTzYJ3XP6Sg7ae8LcotJPhuq2w2eyO0_P3rVfUt9_zm9mn74_Y-5q-l6Ky179PGnnmfV6Rpd0qVS4IxZSGFtvnH8P7MrRyO8l4JLvP2EbSeYfilSGWa7SIcLSDLNSTL1jg9MSy5bN7z59HkOJL04JXGSzt6GfZLO_3r9OYk5I8k0jhxSqaxvkqlrJy5bIDRnhObAjZcMoXlFaP5DKnt6POCzeMpDOB9wacHwBkG5fHmfY8BldYc_BIik8_O0lK_T4mT9FoQ8Z-YFbtJDTDfsziFyLEClmaxXQ9jvQ3KOjPx4T5yof7lyixPd9vnqf1cfv1y93nD_-PfqJaBv2lj_ha7a4_mlzfU2vfTdFJwrvzjejEG1P1Oas_4N3urZRRwwTAecYPkatfm30t4oywTMH7Hu_Jnxhq89o1EYRXEGBt3p2fhtCqM4j-CBCQG1UPWdo_DgbAXuvHu9NRbXPkoQeMtng5rQi35isAVfXJB-UeANcMXW6Aa7WB6AO6QXkNEwJTR1qnnZXno9QZqF4ye7O58APm6E0qy_A7gC-yTOJUq9Cy3C_Fmoc_Y88fYx3dv7s1NQMYMNeLkZ9xOwzzNEjL0nFGH5PNMr9igsBrurJTAoDbf8HkHjRmkLG2WsuzjUaIzvv-PEsWcljqIwes7iabvb5GO7V8nhZtOnvxkGWpSomcUmPLo5abSdlth4OR0dQEfNJGnKpGQjnMRZXlJa5ul4tJo04ypP8zjOYlrXWRHXTZ5WUZqW42SZF3k84hMa0SRK4jKmY5qMQ5qNC1bQZVZFeRlXGRlHuGZchELcr93VZMSN6XCSxWkcjwSrUBh_waRU4gP4SXf5S2cjPXE-QdW1howjwY01-yiWW4E_6eY56rSYHN2tuF11VVirNaELB2L4z231n1hbQhceuiF04Uv7OwAA___zoSKM">