https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110921
--- Comment #5 from Hongtao.liu <crazylht at gmail dot com> --- Maybe source code can be changed as int f(int a, int b) { #ifdef __BMI__ return _tzcnt_u32 (a); #else return _bit_scan_forward (a); #endif } But looks like clang/MSVC doesn't support _bit_scan_forward, should be a bug for them since it's in the intrinsics guide.