diff options
author | Khaled Hosny <khaledhosny@eglug.org> | 2017-11-11 23:42:52 +0200 |
---|---|---|
committer | Khaled Hosny <khaledhosny@eglug.org> | 2017-11-12 00:28:22 +0200 |
commit | e428f970f69750094f6dbd40dee8e1d36182a545 (patch) | |
tree | 4a2c3dcf06e6ff236bce54f719e462fafac4dc80 | |
parent | 72e901ceb7850b9e8a04c60e997c46df96676c44 (diff) | |
download | fribidi-e428f970f69750094f6dbd40dee8e1d36182a545.tar.gz |
Copy LIKELY/UNLIKELY from GLib
-rw-r--r-- | lib/common.h | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/lib/common.h b/lib/common.h index 739e647..8ef427e 100644 --- a/lib/common.h +++ b/lib/common.h @@ -155,8 +155,22 @@ /* LIKEYLY and UNLIKELY are used to give a hint on branch prediction to the * compiler. */ #ifndef LIKELY -# define LIKELY -# define UNLIKELY +# if defined(__GNUC__) && (__GNUC__ > 2) && defined(__OPTIMIZE__) +# define FRIBIDI_BOOLEAN_EXPR(expr) \ + __extension__ ({ \ + int fribidi_bool_var; \ + if (expr) \ + fribidi_bool_var = 1; \ + else \ + fribidi_bool_var = 0; \ + fribidi_bool_var; \ + }) +# define LIKELY(expr) (__builtin_expect (FRIBIDI_BOOLEAN_EXPR(expr), 1)) +# define UNLIKELY(expr) (__builtin_expect (FRIBIDI_BOOLEAN_EXPR(expr), 0)) +# else +# define LIKELY +# define UNLIKELY +# endif /* _GNUC_ */ #endif /* !LIKELY */ #ifndef FRIBIDI_EMPTY_STMT |