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

    <tr>
        <th>Summary</th>
        <td>
            [X86] 64-bit constant compiled to `movabs`+`add` after branch
        </td>
    </tr>

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

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

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

<pre>
    https://c.godbolt.org/z/GEb9G3bMq

This C code, compiled with `-O3`:

```c
#include <inttypes.h>
#include <stdlib.h>
uint64_t foo(uint64_t x) {
    if (x >> 47 == 0xffe5) { // equivalent to (x & 0xffff800000000000) == 0x7ff2800000000000
 abort();
    }
    return 0x7ff2800000000003;
}
```

produces:
```asm
foo:
        shr     rdi, 47
        cmp     edi, 65509
        je      .LBB0_2
        movabs  rax, 9219572124669181952 ; 0x7ff2800000000000
        add     rax, 3
 ret
.LBB0_2:
        push    rax
        call    abort@PLT
```
where the `movabs` + `add` could trivially be just `movabs  rax, 9219572124669181955`, as the `movabs` ends up being used only here.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJx8VE-P46gT_TTlS6kjXNjYPviQdDpzmZ9-e5jD3kbY4JgWMRnA6e759CvsZJKZ1i6KVMCrV39eXMgQzHHSuoVyB-U-k3McnW_VT2lOMuuc-mjHGM8B-BboAHToN0enOmfjxvkj0OEn0OHLS9d84d3_fgDbAtt-G03AZ-yd0kDJns7GaoVvJo4Igj39n4NgKeLinvbLr08H4mbq7aw0An82U4wfZx02I_CXT2iIypruhs1miqL4HnFwDqj-dXwHahCqHbAtIqIZEKh-x0TiL1hUCHwPfI_sfRh0eXXGtVnUP2ZzkVZPEaO7EkksvsNQs_taeLdA1TDQbyDbouycj0A1UAP8VgxU--vO6zj76TOXr86r4y-lVuHO3qm51-Gq5A2U4QRsm1RY7vG6wugX65VJ_0pRPWD96bxYvWKiLFnzAL_q1W6-7nbsOz0gJ3eRXUD08j0RG8qbsqKcCiGavM6bkhD47l8kuS6p1FrYGoMnyOsIbHvL91sf5zmMN_eHDqS1S7BF5oL99fXbH4K9jdprjKNOn-BaNwiGQLt0IZVKp97NVmH05mKktR_YaXydQ7xT_qPVMuWhZ5ThcxY9qYDzGTttpiPOQSt0k_3AVNMmUy1XDW9kptu8KuomL4lV2diKQXdDxZgeuorqSoqmpkY0pZA1k83AMtMSo5IJxlleiKLakBC8KQpGXPKyqSQUTJ-ksRtrL6c0sZkJYdZtXlCZ88zKTtuwzD7RpN9wQYEoPQW-TaSnbj4GKJg1IYZ7mGiiXR6Nv2sB5R5F8dSZiL2bQpRTvA99GpsHJYB2d7XlELXHzsupH7PZ2z-emqOJ49xtencCOqTMV_N09u5V9xHosNQbgA7Xhi4t_RMAAP__lmVVAw">