summaryrefslogtreecommitdiff
path: root/src/system.h
diff options
context:
space:
mode:
authorAkim Demaille <akim.demaille@gmail.com>2020-04-02 07:09:27 +0200
committerAkim Demaille <akim.demaille@gmail.com>2020-04-02 07:16:44 +0200
commit6e89bc0fd27ee8bf1095544504c6970530e9527c (patch)
treef2a506aa03d016b87ab21ffdc74a08bfedf8e830 /src/system.h
parente3e21cc0d86c395b7043b80063bc8871173438d9 (diff)
downloadbison-6e89bc0fd27ee8bf1095544504c6970530e9527c.tar.gz
build: fix compatibility with old compilers
GCC 4.2 dies with src/InadequacyList.c: In function 'InadequacyList__new_conflict': src/InadequacyList.c:37: error: #pragma GCC diagnostic not allowed inside functions src/InadequacyList.c:37: error: #pragma GCC diagnostic not allowed inside functions src/InadequacyList.c:40: error: #pragma GCC diagnostic not allowed inside functions Reported by Evan Lavelle. See https://lists.gnu.org/r/bug-bison/2020-03/msg00021.html and https://trac.macports.org/ticket/59927. * src/system.h (GCC_VERSION): New. Use it to control IGNORE_TYPE_LIMITS_BEGIN and IGNORE_TYPE_LIMITS_END.
Diffstat (limited to 'src/system.h')
-rw-r--r--src/system.h11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/system.h b/src/system.h
index 0210f6c6..6073048f 100644
--- a/src/system.h
+++ b/src/system.h
@@ -73,9 +73,14 @@ typedef size_t uintptr_t;
# include <verify.h>
# include <xalloc.h>
-
-/* See https://lists.gnu.org/archive/html/bug-bison/2019-10/msg00061.html. */
-# if defined __GNUC__ && ! defined __clang__ && ! defined __ICC && __GNUC__ < 5
+// Clang and ICC like to pretend they are GCC.
+#if defined __GNUC__ && !defined __clang__ && !defined __ICC
+# define GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__)
+#endif
+
+// See https://lists.gnu.org/archive/html/bug-bison/2019-10/msg00061.html
+// and https://trac.macports.org/ticket/59927.
+#if defined GCC_VERSION && 405 <= GCC_VERSION
# define IGNORE_TYPE_LIMITS_BEGIN \
_Pragma ("GCC diagnostic push") \
_Pragma ("GCC diagnostic ignored \"-Wtype-limits\"")