https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97445
--- Comment #44 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Then perhaps some backends need to be improved. Try e.g.: void bar (void); void foo (int x) { if (__builtin_clz (x) == 32) bar (); } with trunk GCC if you don't trust me.