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

    <tr>
        <th>Summary</th>
        <td>
            Missing optimization : adjust if conditions `(a | b) == 0` and `b == 0 && a != 0` to simplify cfg
        </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/BF4K-B

### Description:

```c
void src(unsigned a, unsigned b) {
    if((a | b) == 0){ // InstCombine always folds a != 0 && b != 0 to (a | b) == 0
 dummy();
    }else{
        if(b == 0 && a != 0){
 dummy1();
        }else{
            dummy2();
        }
 }
}
```
can be folded to
```c
void tgt(unsigned a, unsigned b) {
    if(b == 0){
        if(a == 0){
            dummy();
 }else{
            dummy1();
        }
    }else{
 dummy2();
    }
}
```
Unless `dummy` is called more probably, I think it's always profitable to avoid reduntant calculation on condition expression.

### Real-world motivation

This snippet of IR is derived from [redis/src/aof.c@backgroundRewriteDoneHandler](https://github.com/redis/redis/blob/c85a9b7896b9727709b71fed414bf8a117436d71/src/aof.c#L2587) (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/zYhPe33ds

**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/eJyUVVtv4ygU_jXk5agRxvcHP7SNoq12VruqdqXdRzDHMVMMFuB00l-_glx6UZvRRCg2Bj6-850b917tDGJHyjtSblZ8CaN13b_342ElrDx0t1rtkcHsrB1IfgtjCLMn-S1hW8K2PK2utd5Pa-t2hG17JGz7Qtj2blv8fnNH6IbQ29M_y48DNuh7p-agrIlQb_dU9Dj643xvlQTvesKaxSSqEjhh93CZCcJaIPXpJgAANRDWENZwIPX9aT3fkHwDlLCW1HdwJA8Pxod7OwllELh-5gcPg9XSAwfCsnQACKsIq0C8fgkWvgA_MpDLNB0Sg5bkb2iReoPa4zuqF7rignK-8ZXDkfRb9OwT-GtXxF86yL4-ePpweXt9ObvkOO25AYFJKJQQ7BW_hV34Zb-JD776RCt-dcvF1o-m_lScK6pe8eKXuv5UyX-MRu-BVPTIt6KgPPRca5QwWYcx6wQX-hCFe4AwKvMEKhBW-3O8zs4OKnChMcYlT7I7lIsJ3ISI1S-axzwDa6C3Rqo0wR-zQ--VNevPM_QRub55tk5HJkHtE8bbrX-PyoM3ap4xgB3g4TGSl-jUHiUMzk5AyjuHUnnCtimDt9wO654UVPD-aefsYuQjPjsVcGMN_saN1OhIuSGseV9ldiqMi1j3diJse4Y8P4W2ItadpuStqJu2Em3N6pq2os4GlEVWiKHhWVYXeSXr7AMZln9jZVOnWGQNHwI6-DOHWc2olUHC2vXZXgT8wadZI3Bh9xjN5UnrHiXs0SU14WGAg10Iqx2CMgEd-oASlIEwIlindspwDX4Rdg5q4joqx42E12n0tsdYkrwl-e0HLawUVodTtY2F9uW_8S_Mc-nfezKObxhgQngy9hlUIgYxfXtrBuUmCCMPl3gyRwbq5RQu82xdWIwKKfrCyM2TXx9hV7LLZZu3fIVdVlOWt7TJ2GrsRIWypJLSsqUFz9qB9U1fSF4Wecl7FCvVMcryjGUsKxjNsnVf5rwcRMY4G9qcClJQnLjSl5ayUt4v2NVl1tKV5gK1T72KMYPPkBYJY7F1uS6euRHLzpOCauWDf0UJKmjs_lDeK7N7b2nsalx-X3yIGl1yJCXmF4W-osllpKJX63aVmoVX06zVcIB-2K0Wp7srwR35nh43s7PfsQ-EbZOVMdaTCv8HAAD__yY-MgY">