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

    <tr>
        <th>Summary</th>
        <td>
            `-Wshorten-64-to-32` should not warn when value is bounded by conditionals
        </td>
    </tr>

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

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

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

<pre>
    ```c
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
 if (argc < 2)
        return 0;

    long long x = strtoll(argv[1], NULL, 10);
    if (x <= INT_MAX) {
        int y = x;
        printf("%d\n", y);
    }
    return 0;
}
```

Compiling with `clang-19 -Wshorten-64-to-32` produces this warning on the `int y = x;` line:
> warning: implicit conversion loses integer precision: 'long long' to 'int' [-Wshorten-64-to-32]

Expected result: No warning.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx8U8uO4yoQ_ZryppTILmwSL7xI5yFdqW-v7tXMboQNsRkRsADn8fcj8uj09LQGReFRnHPq-AgRgu6tUg1UL1BtMjHFwflmex6N88rnddY6eWmA57dfB_kG8hUQ07Yzk1QIbG30QccwH4BtvyqHKLX7W9Xo9kNZ24gHoS3QMi2F7zugNXaD8Ai0Er4_3poFqu-Ei5fbAvUegZYJkqiR3q_gfXgVJ28xB3aHPMvG2f72d0ZgGwzRR2fMjS9JFlfNNb79__qa5iJP9A-iRHGTT_B1Yvjn7b8f_66-A9X4bPE-krXLVef8G0Uao9c27oGWQARUSajW9rpc4-WzJCw2z82f7h7V9wA_ul67w6iNtj2edBwwxWuE7WdFjbNvYXA-Kjvj5Sy6GSPgOY7eyalTAeOgA56EtwnsLMZBJfgnUzxHo60CdtcDtn2AgK1QH0ajOx2xc_aofNDOonFBhfRxVK88jl51Op2n60CL94iAFhhdOtI2pg1UL1-0XG0-2t2eR9VFJdGrMJmYON_co6F5Jhsma1aLTDXFgsqSyoLxbGiqii9rKUkq3u4Lvi-U5DVntRBC1qKsM91QTmW-JFaUJRV8LhnxnDMSBbW83XMoc3UQ2syNOR7mzveZDmFSTZFXS7bIjGiVCdcXSGTVCa_VFHi1yXyTQLN26gOUudEhhidN1NGo9Di_jisMbjISrYtXl3galMWjMJNCHbB1k5VKYntJAUgdtbPChGzyphliHEPKjXZAu17HYWrnnTsA7ZL4fZqN3v1UXQTaXVsOQLu7p2NDvwIAAP__PMBDow">