diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/util.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/util.c b/src/util.c index 7c9c5f54b..a6d349296 100644 --- a/src/util.c +++ b/src/util.c @@ -1413,8 +1413,14 @@ LogEst sqlite3LogEst(u64 x){ if( x<2 ) return 0; while( x<8 ){ y -= 10; x <<= 1; } }else{ +#if GCC_VERSION>=5004000 + int i = 60 - __builtin_clzll(x); + y += i*10; + x >>= i; +#else while( x>255 ){ y += 40; x >>= 4; } /*OPTIMIZATION-IF-TRUE*/ while( x>15 ){ y += 10; x >>= 1; } +#endif } return a[x&7] + y - 10; } |