diff --git a/src/cairo-compiler-private.h b/src/cairo-compiler-private.h index b93fd8298..76b8e8014 100644 --- a/src/cairo-compiler-private.h +++ b/src/cairo-compiler-private.h @@ -139,6 +139,23 @@ #define cairo_const #endif +#if defined(__GNUC__) && (__GNUC__ > 2) && defined(__OPTIMIZE__) +#define _CAIRO_BOOLEAN_EXPR(expr) \ + __extension__ ({ \ + int _cairo_boolean_var_; \ + if (expr) \ + _cairo_boolean_var_ = 1; \ + else \ + _cairo_boolean_var_ = 0; \ + _cairo_boolean_var_; \ +}) +#define _cairo_likely(expr) (__builtin_expect (_CAIRO_BOOLEAN_EXPR(expr), 1)) +#define _cairo_unlikely(expr) (__builtin_expect (_CAIRO_BOOLEAN_EXPR(expr), 0)) +#else +#define _cairo_likely(expr) (expr) +#define _cairo_unlikely(expr) (expr) +#endif + #ifndef __GNUC__ #undef __attribute__ #define __attribute__(x)