changeset 16804:b994b31c2a5d

_Noreturn: future-proof non-GNU and non-MSVC compilers * build-aux/snippet/_Noreturn.h (_Noreturn): * m4/gnulib-common.m4 (gl_COMMON_BODY): Do not define _Noreturn if __STDC_VERSION__ indicates this is C11 or later. This is more likely to work with random future C compilers that are neither GNUish nor MSVCish. See Vincent Lefevre in <http://lists.gnu.org/archive/html/bug-gnulib/2012-04/msg00195.html>.
author Paul Eggert <eggert@cs.ucla.edu>
date Sun, 29 Apr 2012 16:00:14 -0700
parents 50f45dd3bacf
children e437afafc0dc
files ChangeLog build-aux/snippet/_Noreturn.h m4/gnulib-common.m4
diffstat 3 files changed, 10 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
 2012-04-29  Paul Eggert  <eggert@cs.ucla.edu>
 
+	_Noreturn: future-proof non-GNU and non-MSVC compilers
+	* build-aux/snippet/_Noreturn.h (_Noreturn):
+	* m4/gnulib-common.m4 (gl_COMMON_BODY):
+	Do not define _Noreturn if __STDC_VERSION__ indicates this is
+	C11 or later.  This is more likely to work with random future C
+	compilers that are neither GNUish nor MSVCish.  See Vincent Lefevre in
+	<http://lists.gnu.org/archive/html/bug-gnulib/2012-04/msg00195.html>.
+
 	exclude: handle wildcards with FNM_EXTMATCH
 	* lib/exclude.c (fnmatch_pattern_has_wildcards): Also treat '+(',
 	'+@', '!(' as wildcards, if FNM_EXTMATCH.  Make it clear in a
--- a/build-aux/snippet/_Noreturn.h
+++ b/build-aux/snippet/_Noreturn.h
@@ -1,4 +1,4 @@
-#ifndef _Noreturn
+#if !defined _Noreturn && __STDC_VERSION__ < 201112
 # if (3 <= __GNUC__ || (__GNUC__ == 2 && 8 <= __GNUC_MINOR__) \
       || 0x5110 <= __SUNPRO_C)
 #  define _Noreturn __attribute__ ((__noreturn__))
--- a/m4/gnulib-common.m4
+++ b/m4/gnulib-common.m4
@@ -14,7 +14,7 @@
 AC_DEFUN([gl_COMMON_BODY], [
   AH_VERBATIM([_Noreturn],
 [/* The _Noreturn keyword of C11.  */
-#ifndef _Noreturn
+#if !defined _Noreturn && __STDC_VERSION__ < 201112
 # if (3 <= __GNUC__ || (__GNUC__ == 2 && 8 <= __GNUC_MINOR__) \
       || 0x5110 <= __SUNPRO_C)
 #  define _Noreturn __attribute__ ((__noreturn__))