eal: improve likely and unlikely macros
authorAleksey Baulin <aleksey.baulin@gmail.com>
Sun, 19 Nov 2017 22:16:04 +0000 (01:16 +0300)
committerThomas Monjalon <thomas@monjalon.net>
Sat, 20 Jan 2018 16:47:34 +0000 (17:47 +0100)
A warning is issued when using an argument to likely() or unlikely()
builtins which is evaluated to a pointer value, as __builtin_expect()
expects a 'long int' type for its first argument. With this fix
a pointer value is converted to an integer with the value of 0 or 1.

Signed-off-by: Aleksey Baulin <aleksey.baulin@gmail.com>
lib/librte_eal/common/include/rte_branch_prediction.h

index bb26f41..854ef9e 100644 (file)
@@ -21,7 +21,7 @@
  *
  */
 #ifndef likely
-#define likely(x)  __builtin_expect((x),1)
+#define likely(x)      __builtin_expect(!!(x), 1)
 #endif /* likely */
 
 /**
@@ -35,7 +35,7 @@
  *
  */
 #ifndef unlikely
-#define unlikely(x)  __builtin_expect((x),0)
+#define unlikely(x)    __builtin_expect(!!(x), 0)
 #endif /* unlikely */
 
 #endif /* _RTE_BRANCH_PREDICTION_H_ */