klibc/compiler.h: booleanize likely/unlikely
authorH. Peter Anvin <hpa@zytor.com>
Thu, 24 Jul 2008 02:15:53 +0000 (22:15 -0400)
committerH. Peter Anvin <hpa@zytor.com>
Thu, 24 Jul 2008 02:15:53 +0000 (22:15 -0400)
__likely() and __unlikely() should explicitly booleanize their
arguments.

com32/include/klibc/compiler.h

index 9f5d36e..984071f 100644 (file)
 
 /* likely/unlikely */
 #if defined(__GNUC__) && (__GNUC_MAJOR__ > 2 || (__GNUC_MAJOR__ == 2 && __GNUC_MINOR__ >= 95))
-# define __likely(x)   __builtin_expect((x), 1)
-# define __unlikely(x) __builtin_expect((x), 0)
+# define __likely(x)   __builtin_expect(!!(x), 1)
+# define __unlikely(x) __builtin_expect(!!(x), 0)
 #else
-# define __likely(x)   (x)
-# define __unlikely(x) (x)
+# define __likely(x)   (!!(x))
+# define __unlikely(x) (!!(x))
 #endif
 
 /* Possibly unused function */