summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSheikha AL-Hinai <sheikha443@gmail.com>2016-01-03 15:06:28 +0400
committerMichael Meeks <michael.meeks@collabora.com>2016-01-06 09:38:16 +0000
commiteafb1ebf74c3caf8fbecdc6a4fc7037c3c8f4964 (patch)
tree92b2b6e7b2576f3cd7d0127693776fdd5e8311cd
parent1479ad1c632a7511468fc5133e4fd747062c376f (diff)
tdf#39631: Add optimisation helpers
Change-Id: I3d09eea11e7acabcd9b692bf5abd7676b89f1323
-rw-r--r--include/sal/types.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/include/sal/types.h b/include/sal/types.h
index 9cd77f846767..9eb45a6ced24 100644
--- a/include/sal/types.h
+++ b/include/sal/types.h
@@ -612,6 +612,26 @@ template< typename T1, typename T2 > inline T1 static_int_cast(T2 n) {
#define SAL_WARN_UNUSED
#endif
+#if defined(__GNUC__) && defined(__OPTIMIZE__)
+#define _SAL_BOOLEAN_EXPR(expr) \
+ __extension__ ({ \
+ int _sal_boolean_var_; \
+ if (expr) \
+ _sal_boolean_var_ = 1; \
+ else \
+ _sal_boolean_var_ = 0; \
+ _sal_boolean_var_; \
+})
+#define SAL_LIKELY(expr) (__builtin_expect (_SAL_BOOLEAN_EXPR(expr), 1))
+#define SAL_UNLIKELY(expr) (__builtin_expect (_SAL_BOOLEAN_EXPR(expr), 0))
+#define SAL_HOT __attribute__((hot))
+#define SAL_COLD __attribute__((cold))
+#else
+#define SAL_LIKELY(expr) (expr)
+#define SAL_UNLIKELY(expr) (expr)
+#define SAL_HOT
+#define SAL_COLD
+#endif
#endif // INCLUDED_SAL_TYPES_H
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */