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

    <tr>
        <th>Summary</th>
        <td>
            miss optimization for count trailing ones (miss `__builtin_ctz` detection)
        </td>
    </tr>

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

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

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

<pre>
    https://godbolt.org/z/66azfKsb4
```c
#include <stdint.h>

int trailing_one1(unsigned x) {
        x = ~x;
        return x ? __builtin_ctz(x) : 32;
}

int trailing_one2(unsigned x) {
        int i = 0;
        while (x & 1) {
                ++i;
                x >>= 1;
        }
        return i;
}

int trailing_one3(unsigned x) {
#if __has_builtin(__builtin_stdc_first_trailing_one)
        return __builtin_stdc_first_trailing_one(x);
#else
        return trailing_one2(x);
#endif
}

int main(void) {
        __builtin_printf("0=%d, %d, %d\n", trailing_one1(0), trailing_one2(0), trailing_one2(0));
        __builtin_printf("INT32_MAX=%d, %d, %d\n", trailing_one1(INT32_MAX), trailing_one2(INT32_MAX), trailing_one2(INT32_MAX));
        __builtin_printf("UINT32_MAX=%d, %d, %d\n", trailing_one1(UINT32_MAX), trailing_one2(UINT32_MAX), trailing_one2(UINT32_MAX));
        return 0;
}
```

Also clang lacks `__builtin_stdc_*` GCC builtins: https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyklUuPozgQxz9NcbE6MuWEx4FDHs1qtdrdy7a0NwS2CZ5x7Aib7p4c5rOPTCcizWT6oZGsIKr8r_yq7PxTO6f2RsoCVhtY7aJ68J3ti9PQDloNUWPFt6Lz_uiArQFLwHJvRWO1X9h-D1ieAMskqU_tX65ZAt0BXUNCXxY_vyNThutBSAJs67xQxi86YPfn9PipjCe-r5VWZl9ZI2PAbDAjmyDPgDmBdHMR5M8E2I58fwY2xXrph96QkCpJVTWD0l6ZivsTYPZSga0Jw0mT7t4iwDcJwm41UtBriKdOaUnCFxLAhMRzWVi4Adyoa9W5o_tx7Uj8KjdRXlpUH22BvdECMtWSqupqdxkVYDaNzXnBq1b1zlfXFQHzOc0HNOP4J2hkUjs5rzOf_U8aI1T7y7YP9djAo1ViPvMJ8Ngr41vADBApsB3gSgBuyavnamsAMbzO7yMNRLM4vhvPr0_zNsuf__zHsPp7_f_nmSbpbYbP5T_A-vAbsA_v0Xx2Q37DAOiNX8fFka5vzVo7S7iuzZ7omn91BBI6u8uAQUr-2G7JOR5skMz8kPPF3gxnP7RGKyOF5e4lBVj-6zvZ323OBRadP-hIFEzkLK8jWcQpxTjLEbOoK3ibZXXKuMyTVrB6VScUKWPY5IwxnsSRKpAiizGmNEGK2UJykaYrkeKyXQoeC1hSeaiVXmj9eAhQkXJukEW6zNMk0nUjtRvNHtHIJzImw3GtdlFfBM1dM-wdLKlWzrupildey-KgnCP26NVBnWqvrCGt7Qm3w5XzEGukCx44bn411WDGCSVCesmDGjCPhl7P_2GU74Zmwe0BsAwA58fdsbdfJPeA5YgdRjy29SMAAP__4pj9DA">