From 043ed78ce03febd113615f5920bc9dffaf7f0b16 Mon Sep 17 00:00:00 2001 From: Alan Coopersmith Date: Fri, 19 Apr 2013 14:45:28 -0700 Subject: [PATCH] Add _X_COLD attribute for branch prediction hints Unfortunately the Solaris Studio equivalent is a pragma taking the function names as arguments, so doesn't translate cleanly into a common macro form. Signed-off-by: Alan Coopersmith Reviewed-by: Peter Hutterer --- Xfuncproto.h.in | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Xfuncproto.h.in b/Xfuncproto.h.in index 8256fec..dac9229 100644 --- a/Xfuncproto.h.in +++ b/Xfuncproto.h.in @@ -97,6 +97,7 @@ in this Software without prior written authorization from The Open Group. # define _X_INTERNAL #endif /* GNUC >= 4 */ +/* Branch prediction hints for individual conditionals */ /* requires xproto >= 7.0.9 */ #if defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 303) # define _X_LIKELY(x) __builtin_expect(!!(x), 1) @@ -106,6 +107,14 @@ in this Software without prior written authorization from The Open Group. # define _X_UNLIKELY(x) (x) #endif +/* Bulk branch prediction hints via marking error path functions as "cold" */ +/* requires xproto >= 7.0.25 */ +#if defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 403) /* 4.3+ */ +# define _X_COLD __attribute__((__cold__)) +#else +# define _X_COLD /* nothing */ +#endif + /* Added in X11R6.9, so available in any version of modular xproto */ #if defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 301) # define _X_DEPRECATED __attribute__((deprecated))