diff options
author | Akim Demaille <akim.demaille@gmail.com> | 2020-04-02 07:09:27 +0200 |
---|---|---|
committer | Akim Demaille <akim.demaille@gmail.com> | 2020-04-02 07:16:44 +0200 |
commit | 6e89bc0fd27ee8bf1095544504c6970530e9527c (patch) | |
tree | f2a506aa03d016b87ab21ffdc74a08bfedf8e830 /src/system.h | |
parent | e3e21cc0d86c395b7043b80063bc8871173438d9 (diff) | |
download | bison-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.h | 11 |
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\"") |