summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/replace/replace.h19
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 */