_Noreturn: future-proof non-GNU and non-MSVC compilers
authorPaul Eggert <eggert@cs.ucla.edu>
Sun, 29 Apr 2012 23:00:14 +0000 (16:00 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Sun, 29 Apr 2012 23:00:46 +0000 (16:00 -0700)
* 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>.

ChangeLog
build-aux/snippet/_Noreturn.h
m4/gnulib-common.m4

index 9d5195f..baff376 100644 (file)
--- 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
index 1a7b4da..c44ad89 100644 (file)
@@ -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__))
index ae4d254..ab3c43d 100644 (file)
@@ -14,7 +14,7 @@ AC_DEFUN([gl_COMMON], [
 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__))