<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=http://email.email.llvm.org/c/eJy9VNtu2zAM_Rr5RWjgW3x58MOatMOAFh2GYd2eCtmiHG2yFEhymvTrRynJ2m4YsGHADDkmRYo84iHTG37o3gl6c_Ppln7T5tFRv2GeMk2l9jCCpTumZqAD7gjpcZcyWuQXfZSjB8lXFDW3MbPidGtNz3p1oNzEUAuSrkn65vh7p89nPbMjeBcOsp2R3FHYb0E7uQM6zcrLR2M5ZVb6zQReDiEJ05waTfdN9VCVp6wBl5OjlkKi6DGvBT4PgLmB6nnq8QZG0A9XnxEZCLkHhx4uZNBjuI2bmFLoNBiOl9Gv4F4bi7DYtFVAitMeqdLjGk56Xkg9qJkDJcXKeY5VWWxIcfUyULghwuTwAELA4EnekLwlxeUvTsKYk_FoqU8uFB-BcNCICaryAcuPCdc0xShRXNG2baNC8su4WvrqeHh-jyFYSb0-p12_wNQz-weYivw_YfrBwFFdKYZMYlOcKUSq6Mb7rQuc5de4RsN7o_zC2BG1J3w_NsKUX5iFY4y3q9XfRrDufl_f7qpbekG18XCcmxAIlJykZh5cbMKqjA3_3MoJ7wreFi1L2Ow3xnbA3IG5rSyyMpmt6n5KjefmfjGYCRWldufPBU7a11iza-ncDA6FZd7UabLpCsGHuhJt1YihX6Z9XbWsSttSNOVQ8SpLFOtBuY4skZJcwyONIVAmy3Xy7whkl6d5luV5mS2zuqgXaTNkRV8usywVTZ9xUqYwMakWIU6oamK7GLKfR4dGJZ13z0bmwowDRMCI0EuvoLvbeqz0E_PSRMre44DjJL_-d3LU7HDzxIIUgZMDsgFh-C22DiQRfBeRfwdyZYaI>52870</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Optimization: Prefer 32-bit integers over 64-bit if they are in range
        </td>
    </tr>

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

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

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

<pre>
    If LLVM knows that an integer value can fit in a 32-bit integer, it should probably do that.

On 32-bit targets it avoids expensive multiword arithmetic, and on x86_64, it can significantly reduce the number of REX prefixes resulting in smaller codegen.

For example:
```c
#include <stdint.h>

void side_effect();

void foo()
{
    for (int64_t i = 0; i < 999; i++) {
        side_effect();
    }
}
void bar()
{
    for (int32_t i = 0; i < 999; i++) {
        side_effect();
    }
}
```
Clang x86 codegen: https://godbolt.org/z/T8fo4Yare
GCC x86 codegen: https://godbolt.org/z/rsWx7Mv6M - note that GCC eliminates the 64-bit arithmetic
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy9U99vmzAQ_mvMi9UIDCHwwMOatNOkVp2maT-eIoMP8GbsyDZp0r9-ZydZ202TtpchA3e-8_d99p1bI47Nu57e3X26p9-1eXTUj9xTrqnUHgawdM_VDLTDmV56nKWc5uyqjXbMIGxN0XOjmZWgO2ta3qojFSZCLUi6Iemb0_dBX9Z6bgfwLizkeyOFo3DYgXZyD3SalZePxgrKrfTjBF52gYRrQY2mh6rclsWZNehyctCyl2h65LUg5g6QG6iepxZ3YHr64eYLKoNeHsBhhgsMegi7cRNXCpM6I3Az-pXcW2NRFp92Ckh-niNlehrd2We51J2aBVCSr50XeCqLkeQ3L4HCDlGmgC30PXSesIqwmuTXvyX1xpyDp8jqnELx6VEOBpGgLLZ4_Ei4oSmiRHNN67qODmHXcdT01fLw_FlDiJLV5kK7eaGp5fYvNOXsP2n6WYGTu1YcK4lNcSkhloqO3u9cqBm7xTEY0RrlF8YO6D3h-7HqTfGVWzhhvF2v_xXBus-H1f2-vKdXVBsPp3sTgEDJSWruwcUmLIvY8M-tnIgmF3Ve88RLr6B52Hlc8MS9NJH5PfYpNuTrS-ao2ePkGUz2AfqIoBB62OIJQDJb1fyiGinndtGZCR2l9pffFV7Sb_G4b6VzMzg0lqxapcnY8CqroC5TzlY5y9qs4mzJyjIVos8q1haJ4i0o15AlVpNpeKQRAm2y3CSyYSnLMsaKbJmt8tUirbosb4tllqV91WaCFClMXKpF0BGOM7FNlNTOg8Ogks675yB34XIDRDrE57MfjW2AuyN3O5lnRRLpmyj_BzEHcF0">