<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">