]> Savannah Git Hosting - gnulib.git/commitdiff
_Noreturn: beware of C's _Noreturn in C++ pre C++11
authorAkim Demaille <akim.demaille@gmail.com>
Fri, 22 Mar 2019 07:25:53 +0000 (08:25 +0100)
committerAkim Demaille <akim.demaille@gmail.com>
Sun, 24 Mar 2019 06:52:53 +0000 (07:52 +0100)
* lib/_Noreturn.h, m4/gnulib-common.m4: Using C's _Noreturn in
C++98 appears to be supported by Clang, but not by GCC nor ICC.

ChangeLog
lib/_Noreturn.h
m4/gnulib-common.m4

index 58b47dcd1ef87a18e9f60e31086534926a2b35d4..e87ff23894842b09fcf34ee955bc444966336629 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2019-03-22  Akim Demaille  <akim@lrde.epita.fr>
+
+       _Noreturn: beware of C's _Noreturn in C++ pre C++11.
+       * lib/_Noreturn.h, m4/gnulib-common.m4: Using C's _Noreturn in
+       C++98 appears to be supported by Clang, but not by GCC nor ICC.
+
 2019-03-23  Bruno Haible  <bruno@clisp.org>
 
        Support cross-compilation to musl libc.
index 1629cef39b592422a90ebc5635dab9258faee3d1..7594e4b0c0bddec7046576396930b390123b73cf 100644 (file)
@@ -3,8 +3,9 @@
       && ((201103 <= __cplusplus && !(__GNUC__ == 4 && __GNUC_MINOR__ == 7)) \
           || (defined _MSC_VER && 1900 <= _MSC_VER)))
 #  define _Noreturn [[noreturn]]
-# elif (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \
-        || 4 < __GNUC__ + (7 <= __GNUC_MINOR__))
+# elif ((!defined __cplusplus || defined __clang__)                     \
+        && (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0)  \
+            || 4 < __GNUC__ + (7 <= __GNUC_MINOR__)))
    /* _Noreturn works as-is.  */
 # elif 2 < __GNUC__ + (8 <= __GNUC_MINOR__) || 0x5110 <= __SUNPRO_C
 #  define _Noreturn __attribute__ ((__noreturn__))
index 8ad963e3557311a5fba6319dd1404994a9769638..57b94ed53256c3df5bbcd1b674fb2cad3693d793 100644 (file)
@@ -21,8 +21,9 @@ AC_DEFUN([gl_COMMON_BODY], [
       && ((201103 <= __cplusplus && !(__GNUC__ == 4 && __GNUC_MINOR__ == 7)) \
           || (defined _MSC_VER && 1900 <= _MSC_VER)))
 #  define _Noreturn [[noreturn]]
-# elif (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \
-        || 4 < __GNUC__ + (7 <= __GNUC_MINOR__))
+# elif ((!defined __cplusplus || defined __clang__) \
+        && (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0)  \
+            || 4 < __GNUC__ + (7 <= __GNUC_MINOR__)))
    /* _Noreturn works as-is.  */
 # elif 2 < __GNUC__ + (8 <= __GNUC_MINOR__) || 0x5110 <= __SUNPRO_C
 #  define _Noreturn __attribute__ ((__noreturn__))