Mesa (master): util: fix NORETURN for msvc, add HAVE_FUNC_ATTRIBUTE_NORETURN to c99_compat.h
Roland Scheidegger
sroland at kemper.freedesktop.org
Fri Jan 12 01:52:23 UTC 2018
Module: Mesa
Branch: master
Commit: 85377dc55c55d1c5536cdf9a86ce67ebb59b7e77
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=85377dc55c55d1c5536cdf9a86ce67ebb59b7e77
Author: Roland Scheidegger <sroland at vmware.com>
Date: Thu Jan 11 01:49:00 2018 +0100
util: fix NORETURN for msvc, add HAVE_FUNC_ATTRIBUTE_NORETURN to c99_compat.h
We've seen some problems internally due to macro redefinition.
Fix this by adding HAVE_FUNC_ATTRIBUTE_NORETURN to c99_compat.h,
and defining it for msvc.
And avoid redefinition just in case.
Reviewed-by: Brian Paul <brianp at vmware.com>
Reviewed-by: Jose Fonseca <jfonseca at vmware.com>
---
include/c99_compat.h | 1 +
src/util/macros.h | 12 ++++++++----
2 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/include/c99_compat.h b/include/c99_compat.h
index cb690c6e2a..81621a7fab 100644
--- a/include/c99_compat.h
+++ b/include/c99_compat.h
@@ -164,6 +164,7 @@ test_c99_compat_h(const void * restrict a,
# define HAVE_FUNC_ATTRIBUTE_FORMAT 1
# define HAVE_FUNC_ATTRIBUTE_PACKED 1
# define HAVE_FUNC_ATTRIBUTE_ALIAS 1
+# define HAVE_FUNC_ATTRIBUTE_NORETURN 1
# if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
/* https://gcc.gnu.org/onlinedocs/gcc-4.3.6/gcc/Other-Builtins.html */
diff --git a/src/util/macros.h b/src/util/macros.h
index d6e37053b1..432d513930 100644
--- a/src/util/macros.h
+++ b/src/util/macros.h
@@ -171,10 +171,14 @@ do { \
#define ATTRIBUTE_RETURNS_NONNULL
#endif
-#ifdef HAVE_FUNC_ATTRIBUTE_NORETURN
-#define NORETURN __attribute__((__noreturn__))
-#else
-#define NORETURN
+#ifndef NORETURN
+# ifdef _MSC_VER
+# define NORETURN __declspec(noreturn)
+# elif defined HAVE_FUNC_ATTRIBUTE_NORETURN
+# define NORETURN __attribute__((__noreturn__))
+# else
+# define NORETURN
+# endif
#endif
#ifdef __cplusplus
More information about the mesa-commit
mailing list