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

    <tr>
        <th>Summary</th>
        <td>
            Missed DCE for __builtin_{clzg,ctzg} when bitshift
        </td>
    </tr>

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

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

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

<pre>
    [Godbolt](https://godbolt.org/z/G89zK5brd) and [GCC bug](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120279)
```
unsigned long f0(unsigned long arg0, int arg1){
    int tmp1;
    if(arg1){
 tmp1 = __builtin_ctzg(arg0, 0);
        return (arg0 >> tmp1);
    }
 tmp1 = __builtin_clzg(arg0, 0);
    return (arg0 << tmp1);
}

unsigned long f1(unsigned long arg0, int arg1){
    int tmp1;
    if(arg1){
 tmp1 = __builtin_clzg(arg0, 0);
        arg0 <<= tmp1;
        tmp1 = __builtin_ctzg(arg0, 0);
        arg0 >>= tmp1;
        return arg0;
 }
    tmp1 = __builtin_ctzg(arg0, 0);
    arg0 >>= tmp1;
    tmp1 = __builtin_clzg(arg0, 0);
    arg0 <<= tmp1;
    return arg0;
}

```
f1() uses __builtin_ctzg() then __builtin_clzg() for returning ARG0 when it could instead use __builtin_clzg() in f0() (Vice versa) with flags -O3 -march=icelake-client.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJy8VF2PmzoQ_TXDi5XIjAkfDzwksOzD1dWVrqq-RgYbcOvACtsbNb--MqDdpNlG6j7UQsKaOT5nfEYebozqBilz2B1gVwbc2X6c8sMkufgynoJ6FD987nkU9agt7ErAtLf2xQDbA1aAVbektuPUAVYXwOo5zS7_7OpJAGaED4J4gqIgtes-JGiabTe4laB23UVpzQEr04_nY-26bdMpYJUSwMoQKSYZYAZ0DzFdP7p3w3wRQfQ4dKSlgOltiE8dBSyIGqzfh54iOQDdE0LmoD29hMDeIi1geovzAAKsJMdj7ZS2ajg29tItuJmbevAbhV-TtG4ayIohwJ6APS1S11BIyt8p6AcKd-wFsOKWfWG-Nyj8SwY9Kt-vq8L9yVsNvz7j-pXXH5Ouxs0MS2LtwCcEH4r9qSUP7bir-q251y9hbq1_ec5Ic38Jn7G9HO4r8pl2nFYZNXRk__8zJWcPVpY0o9OCqMFYyYUn_5hBDcvr83vA9KtqJHmVk-E-cFa2J63mnSGb_xjZnPjU9MBK1UjNv8tNo5Uc7DYQORMZy3gg8zCJEoySmGVBn4uobkNsI5E2cSPrWEaUZy3SWMRRgywNVI4Ud3QXRmHK2C7bMhmHcZQi1hSzLGUQUXniSm-1fj35kRMoY5zMQ5ZlURRoXktt5mmIOMgzmbOA6IfjlPtDm9p1BiKqlbHmncYqq2X-rzJGClIWT7OV7w5BclhMKuY-JOXia62s6VVrAzfp_JexqGzv6m0zngArL7P-Ni_T-E02FrCaizOA1Vr9a44_AwAA__8mtLE4">