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

    <tr>
        <th>Summary</th>
        <td>
            [InstCombine] Missed optimization for `(a + 1) - b == 1`  --> `a == b`
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            llvm:instcombine,
            missed-optimization
      </td>
    </tr>

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

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

<pre>
    Alive2 proof: https://alive2.llvm.org/ce/z/EP9iNx
Missed example: https://godbolt.org/z/5Wxaxv6s4

### Description:
As the title and the example suggests.
But to my surprise, LLVM works well on the more general form `(a + c) - b == c` --> `a == b`. However, when replacing `c` with `1`, it fails.

### Real-world motivation:
This snippet of IR is derived from `FFmpeg/.../extr_a64multienc.c_render_charset.c` (after O3 pipeline).
The example above is a reduced version. If you're interested in the original suboptimal IR and optimal IR, please contact me to get them (I don't attach them because they contain more than 1k lines).

**Let me know if you can confirm that it's an optimization opportunity, thanks.**
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx0VF1vrDYQ_TXmZbQIzMLCAw-b7EWNlNtWV1Xbt8iYAaYxNrLNftxfXxk2N02qK1m7MjNzzswZHQvnaNCINcsfWH6KxOJHY-u_H8db1JruVh8VnZHDbI3pWXaE0fvZsezIeMN4I9ZorNR5io0dGG8kMt58Z7z58ntFv15ZcmLJ8Ss5hx3gVUyzwv_DDKZrjfJ3iFCd_3UV13Ph9hvA_Zdn24ETOmlp9mR0AFmjRwd-RPDkFYLQ3Xq7U4JbhgGdd_GW-7B48AamG7jFzpYcMv4Iz89_foWLsa8OLqgUGL1iTMYiDKjRCgW9sROwImG8FMD4A0jGK9hBCyw7sewEkhUJ7HYs-xLSxNvnlhVJDL-YC57RBrLLiBoszkpI0kPIXSsv5MdwSVeORyAPvSD11vhnIb6hULuLsaqDyXg6iw-S_DGSA6dpntGD6eHpG5CDDi2dsYPemnWUpplmDMLHccx4g1dvX0SxnxblCbWM5YtF3aF9kaOwDn28NhoE6D1a-C2DmWZUpJHxKn5jftdetOaMgViAxW6R2MEZrSOjY3jq4WYWxg8WgbRHi85jB7QpbywNpIUCt7Rm9jQJFWYIy32_BpVmhcIhSKO9kB4mDNsd0AeUKbT6BJ3RjB88CO-FHLdAi1IsDsPlthWT3tbtR6EhfYUwlXsf603-cJ5xJXrV5gK0jgFS6ADTk50CggfyjB8cCL31S9_X_YCZZ2P9osnfQveB7NXFG2zU1VlXZZWIsE4PSZLuk6wso7Fusyopqn3RClnl5aEsRdfloshblPtqnxYR1TzhWZqmRZqlWVLGVS_yosywyjtMRXlg-wQnQeqHXyNybsH6wPOUR0q0qNz6EHAeMlh2JO28NFO77pYz_sg4n1Yz7_47UIjlp8jWoWzXLoNj-0RR8NsPqtWXAf1JO_94x8xPcH8bPujTG_vBY-knjwVzwE9MFi1W1Z-eF_Lj0sbSTIw362Tb32625h-UnvFmFcIx3qxa_BsAAP__2O6Y4g">