From: Dan Carpenter Date: Sat, 17 Nov 2012 13:38:10 +0000 (+0300) Subject: sval: introduce sval_bits_used() X-Git-Tag: 1.57~196 X-Git-Url: https://repo.or.cz/w/smatch.git/commitdiff_plain/6cd599abd5af7b6bd7fe59cfd7371566de4d041a sval: introduce sval_bits_used() It basically returns fls(sval.uvalued); Signed-off-by: Dan Carpenter --- diff --git a/smatch.h b/smatch.h index ed1eaff0..ba9df4dd 100644 --- a/smatch.h +++ b/smatch.h @@ -521,6 +521,7 @@ int sval_unsigned(sval_t sval); int sval_signed(sval_t sval); int sval_bits(sval_t sval); int sval_positive_bits(sval_t sval); +int sval_bits_used(sval_t sval); int sval_is_min(sval_t sval); int sval_is_max(sval_t sval); int sval_is_a_min(sval_t sval); diff --git a/smatch_sval.c b/smatch_sval.c index 3881a9fa..00774683 100644 --- a/smatch_sval.c +++ b/smatch_sval.c @@ -98,6 +98,17 @@ int sval_positive_bits(sval_t sval) return sval.type->bit_size; } +int sval_bits_used(sval_t sval) +{ + int i; + + for (i = 64; i >= 1; i--) { + if (sval.uvalue & (1ULL << (i - 1))) + return i; + } + return 0; +} + int sval_is_min(sval_t sval) { sval_t min = sval_type_min(sval.type);