From 7f1c264d3049cd95234e91970ccb5406e1d15b27 Mon Sep 17 00:00:00 2001
From: Damien Miller <djm@mindrot.org>
Date: Thu, 15 May 2014 18:01:52 +1000
Subject: [PATCH]  - (djm) [sshbuf.c] need __predict_false

---
 ChangeLog |  1 +
 sshbuf.c  | 10 ++++++++++
 2 files changed, 11 insertions(+)

diff --git a/ChangeLog b/ChangeLog
index 6f8deb439..3d8b9af09 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -139,6 +139,7 @@
    [regress/unittests/test_helper/fuzz.c]
    [regress/unittests/test_helper/test_helper.c]
    Hook new unit tests into the build and "make tests"
+ - (djm) [sshbuf.c] need __predict_false
 
 20140430
  - (dtucker) [defines.h] Define __GNUC_PREREQ__ macro if we don't already
diff --git a/sshbuf.c b/sshbuf.c
index 36a8b92f6..7f7b9f1da 100644
--- a/sshbuf.c
+++ b/sshbuf.c
@@ -28,6 +28,16 @@
 #include "ssherr.h"
 #include "sshbuf.h"
 
+/* XXX move to defines.h? */
+#if defined(__GNUC__) && \
+    ((__GNUC__ > (2)) || (__GNUC__ == (2) && __GNUC_MINOR__ >= (96)))
+#define __predict_true(exp)     __builtin_expect(((exp) != 0), 1)
+#define __predict_false(exp)    __builtin_expect(((exp) != 0), 0)
+#else
+#define __predict_true(exp)     ((exp) != 0)
+#define __predict_false(exp)    ((exp) != 0)
+#endif
+
 static inline int
 sshbuf_check_sanity(const struct sshbuf *buf)
 {