<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=http://email.email.llvm.org/c/eJylUttu2zAM_Rr5hZjhWLUdP_ihTVBgb8P6AYFk0bYaWQp0adZ9_Sj3sqyvM2RKIo8OD0hKp16H2SnpTASj7Znxe1hivAQ6sPqR1nu0dH6m22_6uXBc8h_9M6uOrLp_swe3XjQxzBAXhMkZ4675dvFu9mLNdDfoU7JBzxYVhMX5SNawev_F-SLIeYBP77gITyE9RVb3wLqHNy6g73SSSZuo7UmEkFYksg0IjB9g1xKe8Ru4x5i8BUJRjozJsA_mTyTrjqdb0R5DMpGEaAshSXeJeqXn33-W8KTtiHBFOFt3hdvUuRweQQewDizS6-gAf0W0CoQxxBXRr6i0iAijMGMyImpnQ8ZpXucKaJLVBUDr0rxkv3IQHKSQC6xzjtcLhvJNZaEGrnrei0KkSHUczo5UOrsrkjfDl97quCRZjm6lizEvH9s36tozjpT2UVM9MdCh4W1TFcvQT60YZbVv2r4f5TR1o-i7ru2qSUxqh01hhEQTBtY8sLq2eIWNgs6sORb_r0APdVXTqvbV_q6uu5I0jDucZKcaqdqJs7sKV6FNmXny2BZ-2ChlmgMFjQ4x_A3SwOTxwk0wKYw6GhyebvsLM1r0W1tost9nEAySuZJ--Hf2ik3wsKn9A4DEGD8>53650</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Suboptimal IR generation for shift left with builtin_assume
        </td>
    </tr>

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

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

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

<pre>
    godbolt link: https://godbolt.org/z/3ao3b3P9j

Compiling the following program:

_unsigned short shl(unsigned short val, unsigned char shift) {
    __builtin_assume(shift < 16);
    return (val << shift);
}_

resulted in suboptimal IR. Since we know shift < 16 there is no need to extend all intermediate calculations to i32, it's enough to do so using i16 types.

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJxdUttuozAQ_RrzMioidgjhgYc2UaV9W20_ILJhADfGjnxptvv1OyZtN1tkzFyOzxzGo9zw3k1uUM5EMNqemXiEOcZLIIPxZ1of2dL5ibw_9ArphBI_21dWHVn1eNsPbrloYpggzgijM8Zds3fxbvJyyXR36FOyQU8WBwiz85F2w_j-W_BNUvAAX9F-lp5SeoyMt8CapxsX0HM6qaRN1PYkQ0gLEtkKBCYOsNkRnok7uMeYvAVCUY2MybBP5i8ka46ne9EeQzKRhGgLISl3iXqh4z9-lfCibY9wRThbd4X70rkdHkEHsA4s0unoAH9HtANIY4grol9w0DIi9NL0ycionQ0ZpwXPHdAkqwmA1qVpzvHBQXCQQm6wzjXeLxjKm8pi6MTQilYWUUeD3cu9UpjQol8L0B19dBMM0nbVcYb_u1gkb7pv00CopMreLeQY8_b5eaB7fsWehD5rOouBjFrs6qqYO972Vd8Pajf2Epu2Hrat4PWOi1HxRjSiMFKhCR2rnxjnFq-wUpDN6mOhO15xWtW-2m85b0o1jv0GR9UMtRp2o2DbChepTZl15DEtfLdKUmkKlDQ6xPAvSb-WxwnXcsQvU6Rp686OOuTsplhrd6v2v16KAik">