]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
[MINOR] added the Linux-style likely/unlikely macros
authorWilly Tarreau <w@1wt.eu>
Sat, 13 Jan 2007 22:06:06 +0000 (23:06 +0100)
committerWilly Tarreau <w@1wt.eu>
Sat, 13 Jan 2007 22:06:06 +0000 (23:06 +0100)
Recent GCC versions support the __builtin_expect() macro which
is undecipherable. Let's use likely()/unlikely() like it's done
in Linux.

include/common/standard.h

index 0b2ea8d8a524656b7c83b5af75df7ed62f87886b..fa9ed17acb489b5e98de8598410bda7c995ce6c4 100644 (file)
  * power of 2, and 0 otherwise */
 #define POWEROF2(x) (((x) & ((x)-1)) == 0)
 
+/*
+ * Gcc >= 3 provides the ability for the programme to give hints to the
+ * compiler about what branch of an if is most likely to be taken. This
+ * helps the compiler produce the most compact critical paths, which is
+ * generally better for the cache and to reduce the number of jumps.
+ */
+#if __GNUC__ < 3
+#define __builtin_expect(x,y) (x)
+#endif
+
+#define likely(x) (__builtin_expect((x) != 0, 1))
+#define unlikely(x) (__builtin_expect((x) != 0, 0))
+
 
 /*
  * copies at most <size-1> chars from <src> to <dst>. Last char is always