Fixing bugs with the table-based predicates
[satune.git] / src / common.h
index d9e6d4346dc525e00fa8d676080bc577cdbeab46..a06dab21eb16ffc9a5a5ba8aad3304dcda457cb2 100644 (file)
@@ -32,7 +32,8 @@ extern int switch_alloc;
 
 #define model_print printf
 
-#define NEXTPOW2(x) (1<<(sizeof(uint)*8-__builtin_clz(x-1)))
+#define NEXTPOW2(x) ((x==1) ? 1 : (1<<(sizeof(uint)*8-__builtin_clz(x-1))))
+#define NUMBITS(x) ((x==0) ? 0 : 8*sizeof(x)-__builtin_clz(x))
 
 #ifdef CONFIG_DEBUG
 #define DEBUG(fmt, ...) do { model_print("*** %15s:%-4d %25s() *** " fmt, __FILE__, __LINE__, __func__, ## __VA_ARGS__); } while (0)