mesa: Add unreachable() macro.
authorMatt Turner <mattst88@gmail.com>
Tue, 5 Nov 2013 00:24:35 +0000 (16:24 -0800)
committerMatt Turner <mattst88@gmail.com>
Wed, 6 Nov 2013 19:26:18 +0000 (11:26 -0800)
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Francisco Jerez <currojerez@riseup.net>
src/mesa/main/compiler.h

index 2820913b6e7bc66a2ab31451bfc0b561c00cd259..dceea02127a859c0cc63a605e25681d5ce363fff 100644 (file)
@@ -248,6 +248,21 @@ static INLINE GLuint CPU_TO_LE32(GLuint x)
       (void) sizeof(char [1 - 2*!(COND)]); \
    } while (0)
 
+/**
+ * Unreachable macro. Useful for suppressing "control reaches end of non-void
+ * function" warnings.
+ */
+#if __GNUC__ >= 4 && __GNUC_MINOR__ >= 5
+#define unreachable() __builtin_unreachable()
+#elif (defined(__clang__) && defined(__has_builtin))
+# if __has_builtin(__builtin_unreachable)
+#  define unreachable() __builtin_unreachable()
+# endif
+#endif
+
+#ifndef unreachable
+#define unreachable()
+#endif
 
 #if (__GNUC__ >= 3)
 #define PRINTFLIKE(f, a) __attribute__ ((format(__printf__, f, a)))