<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/74302>74302</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[InstCombine] Missing optimzation: fold `(b + ~a) > 0` to `b - a > -1`
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</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/VSii3o
### Description:
```llvm
define i1 @src(i32 %a, i32 %b) {
entry:
%i10 = xor i32 %a, -1
%sub2.le = add i32 %b, %i10
%cmp = icmp sgt i32 %sub2.le, 0
ret i1 %cmp
}
```
could be folded to:
```llvm
define i1 @src(i32 %a, i32 %b) {
entry:
%notsub = sub i32 %a, %b
%cmp = icmp slt i32 %notsub, 4294967295
ret i1 %cmp
}
```
### Real-world motivation
This snippet of IR is derived from [redis/src/cluster.c@restoreCommand](https://github.com/redis/redis/blob/8a4ccb01b3ea3072eae6ef3e513b0b24b11a85ae/src/cluster.c#L197) (after O3 pipeline).
The example above is a reduced version. If you're interested in the original suboptimal IR and optimal IR, see also:https://godbolt.org/z/Tz8sEfYEb
**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/eJy0VE1v4zYQ_TX0ZWBDGkqWdPAhiSMgwBYFtouiPZLiyGaXIgWScjY59LcXpJysN2h7KFCAEEXOmwe--RIh6JMlOrD6ntXHjVji2fnDbw_nl4106uVwZ_SFEGbv3Mj4HZxjnAPjdwx7hr3I1p0xl2nn_IlhPxDD_pVh_-svWnPHiiMr7q5f5OuCI4XB6zlqZxPVat0X60pk65WiUVsCXQKriuAHhq3mCAxrwfABrv-SYQesuV99yEb_8k6a7LosgPEjfHMebt235RWTbsIicWcoA4VSN9wPV44b8DDNGajTTzjFN_SVJPm8wz3FLCB7XZU2xw-S1-PgFqNAEozOKFIQ3f8cnASwLoZFZjlpv6XI7v-k2ryrXhmSQ4Vd1e0b7Or_oP5jjXwmYbbPzhsFk4v6InK13EC_nHWAYPU8UwQ3wtNn0AEUeX0hBaN3E7D63pPSgWGfI9QPZgmR_G5gVeEpROfpwU2TsIrVR4btj9V90vG8yN3gJob9G9HbLo2TDPtWVMMgi1JyErxokATtaeRUl1wWEitZlqKtBf3NE5B_KrsmJwhbMUby8DOHWc9ktCWG3e5NKAF9E9NsCIR0F0o6BXhSy0AKLuSDdnYHTyO8uIVh4wm0jZQEkgJtIZ4JnNcnbYVJaXZz1JMwKWTCKvh-TFkMRCBMSMX3IRxOSWfitdFTj395bcPj-Puj_DGFaX2iCBPBV-ueQeeHwSAsDM6O2k8QzyKCjgybAMKuL9CvOcfg5tn5uFgdX9J74lnYr2G30m7UgauOd2JDh7Ipyn3b7ptucz60peIjF6poayo551U9VqOQ2A710A0CN_qABfISi6osy6budmLcd11H3VCKfSe5YlVBk9DmfZptdAgLHZqKF7gxQpIJeUwiWnqGbGSIaWr6Q_LZyuUUWFUYHWL4zhJ1NHm-PtkQH9wkU3LrI_ykQ9D2tGpfpacBm5ofUldgK4HhPfwpconwR0jNAtElq4QtiHy5Ldm-2CzeHP6lePPYWLft7N0fNESGfZaQajlL_CsAAP__X__EHA">