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@vmware.com> Reviewed-by: Jose Fonseca <jfonseca@vmware.com>tags/18.0-branchpoint
@@ -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 */ |
@@ -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 |