diff options
author | Andrew Tridgell <tridge@samba.org> | 2009-09-17 09:07:17 -0700 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2009-09-17 21:52:23 -0700 |
commit | d27140ab763a1bc5e831fe8416869ff6c875452f (patch) | |
tree | 9853a20991f711475bb6d97c3b39f282a28c13b1 /lib | |
parent | 44674efc818baaad527c73d5a0e9f3d05b76d807 (diff) | |
download | samba-d27140ab763a1bc5e831fe8416869ff6c875452f.tar.gz samba-d27140ab763a1bc5e831fe8416869ff6c875452f.tar.bz2 samba-d27140ab763a1bc5e831fe8416869ff6c875452f.zip |
libreplace: added likely()/unlikely() macros for gcc
These macros allow the compile to better optimise code that has a lot
of if statements. I particularly want to use this for our low level
generated NDR code.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/replace/replace.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/lib/replace/replace.h b/lib/replace/replace.h index 2db6aa1226..6424d10c0f 100644 --- a/lib/replace/replace.h +++ b/lib/replace/replace.h @@ -704,4 +704,23 @@ char *ufc_crypt(const char *key, const char *salt); #endif #endif +/* these macros gain us a few percent of speed on gcc */ +#if (__GNUC__ >= 3) +/* the strange !! is to ensure that __builtin_expect() takes either 0 or 1 + as its first argument */ +#ifndef likely +#define likely(x) __builtin_expect(!!(x), 1) +#endif +#ifndef unlikely +#define unlikely(x) __builtin_expect(!!(x), 0) +#endif +#else +#ifndef likely +#define likely(x) (x) +#endif +#ifndef unlikely +#define unlikely(x) (x) +#endif +#endif + #endif /* _LIBREPLACE_REPLACE_H */ |