http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55734
--- Comment #18 from Jakub Jelinek <jakub at gcc dot gnu.org> 2012-12-19 16:48:00 UTC --- Perhaps if (v > 0) { #if IN_LIBGCOV r = 63 - __builtin_clzll (v); #else if (sizeof (v) <= sizeof (HOST_WIDE_INT)) r = floor_log2 (v); else if (sizeof (v) == 2 * sizeof (HOST_WIDE_INT)) { r = v >> HOST_BITS_PER_WIDE_INT; if (r) r = floor_log2 (r) + HOST_BITS_PER_WIDE_INT; else r = floor_log2 (v); } else gcc_unreachable (); #endif }