X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=turbopfor-encode.h;h=d149ae75ce85dd6b4a08392d652e991c488d22d0;hb=57a72db63de76d7bdd12606f2ae93abaff28db01;hp=9341efc0b7f4c23552f29dbd115bac508eb6cc1d;hpb=8c40d71acb262d9efe84af89e28a448bddadbabe;p=plocate diff --git a/turbopfor-encode.h b/turbopfor-encode.h index 9341efc..d149ae7 100644 --- a/turbopfor-encode.h +++ b/turbopfor-encode.h @@ -94,11 +94,20 @@ unsigned char *write_vb(Docid val, unsigned char *out) template inline unsigned num_bits(Docid x) { +#ifdef __GNUC__ if (x == 0) { return 0; } else { return sizeof(Docid) * CHAR_BIT - __builtin_clz(x); } +#else + for (int i = sizeof(Docid) * CHAR_BIT; i-- > 0; ) { + if (x & (Docid{1} << i)) { + return i; + } + } + return 0; +#endif } struct BitWriter {