---
 src/util/macros.h | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/src/util/macros.h b/src/util/macros.h
index 40ebf02..77055e8 100644
--- a/src/util/macros.h
+++ b/src/util/macros.h
@@ -75,6 +75,19 @@ do {                        \
 #define unreachable(str)
 #endif
 
+/**
+ * Assume macro. Useful for expressing our assumptions to the compiler,
+ * typically for purposes of silencing warnings.
+ */
+#ifdef HAVE___BUILTIN_UNREACHABLE
+#define assume(expr) ((expr) ? (void)0 : assert(!"assumption failed"), \
+                                         __builtin_unreachable())
+#elif _MSC_VER >= 1200
+#define assume(expr) __assume(expr)
+#else
+#define assume(expr) assert(expr)
+#endif
+
 #ifdef HAVE_FUNC_ATTRIBUTE_FLATTEN
 #define FLATTEN __attribute__((__flatten__))
 #else
-- 
1.8.5.5

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to