mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-18 16:53:02 +00:00
warnings: don't use _Noreturn with G++ 4.7 in C++98 mode
The timevar and bitset modules now use the c99 module which causes
$CXX to now include -std=gnu++11 when possible. Unfortunately, G++
4.7 does not implement [[noreturn]] in C++11 mode, so our tests of
glr.cc (which uses _Noreturn) fail with
input.cc:954:1: error: expected unqualified-id before '[' token
right before [[noreturn]]. 4.8 works fine.
* data/skeletons/c.m4 (b4_attribute_define): Do not use [[noreturn]]
with GCC 4.7.
This commit is contained in:
@@ -288,6 +288,24 @@ release:
|
|||||||
- Test with a very recent version of GCC for both C and C++. Testing with
|
- Test with a very recent version of GCC for both C and C++. Testing with
|
||||||
older versions that are still in use is nice too.
|
older versions that are still in use is nice too.
|
||||||
|
|
||||||
|
** gnulib
|
||||||
|
To run tests on gnulib components (e.g., on bitset):
|
||||||
|
|
||||||
|
cd gnulib
|
||||||
|
./gnulib-tool --test bitset-tests
|
||||||
|
|
||||||
|
possibly within a specified environment:
|
||||||
|
|
||||||
|
CC='gcc-mp-8 -fsanitize=undefined' ./gnulib-tool --test bitset-tests
|
||||||
|
|
||||||
|
To be able to run the tests several times, and to use symlinks instead of
|
||||||
|
copies so that one can update the origin gnulib directory and immediately
|
||||||
|
re-run the tests, run:
|
||||||
|
|
||||||
|
./gnulib-tool --symlink --create-test --dir=/tmp/gnutest bitset-tests
|
||||||
|
cd /tmp/gnutest
|
||||||
|
./configure CC='gcc-mp-8 -fsanitize=undefined'
|
||||||
|
make check
|
||||||
|
|
||||||
* Release Procedure
|
* Release Procedure
|
||||||
This section needs to be updated to take into account features from gnulib.
|
This section needs to be updated to take into account features from gnulib.
|
||||||
|
|||||||
@@ -229,18 +229,22 @@ m4_define([b4_attribute_define],
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
]m4_bmatch([$1], [\bnoreturn\b], [[/* The _Noreturn keyword of C11. */
|
]m4_bmatch([$1], [\bnoreturn\b], [[/* The _Noreturn keyword of C11. */
|
||||||
#if ! defined _Noreturn
|
]dnl This is an exact copy of lib/_Noreturn.h.
|
||||||
# if defined __cplusplus && 201103L <= __cplusplus
|
[#ifndef _Noreturn
|
||||||
|
# if (defined __cplusplus \
|
||||||
|
&& ((201103 <= __cplusplus && !(__GNUC__ == 4 && __GNUC_MINOR__ == 7)) \
|
||||||
|
|| (defined _MSC_VER && 1900 <= _MSC_VER)))
|
||||||
# define _Noreturn [[noreturn]]
|
# define _Noreturn [[noreturn]]
|
||||||
# elif !(defined __STDC_VERSION__ && 201112 <= __STDC_VERSION__)
|
# elif ((!defined __cplusplus || defined __clang__) \
|
||||||
# if (3 <= __GNUC__ || (__GNUC__ == 2 && 8 <= __GNUC_MINOR__) \
|
&& (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \
|
||||||
|| 0x5110 <= __SUNPRO_C)
|
|| 4 < __GNUC__ + (7 <= __GNUC_MINOR__)))
|
||||||
# define _Noreturn __attribute__ ((__noreturn__))
|
/* _Noreturn works as-is. */
|
||||||
# elif defined _MSC_VER && 1200 <= _MSC_VER
|
# elif 2 < __GNUC__ + (8 <= __GNUC_MINOR__) || 0x5110 <= __SUNPRO_C
|
||||||
# define _Noreturn __declspec (noreturn)
|
# define _Noreturn __attribute__ ((__noreturn__))
|
||||||
# else
|
# elif 1200 <= (defined _MSC_VER ? _MSC_VER : 0)
|
||||||
# define _Noreturn
|
# define _Noreturn __declspec (noreturn)
|
||||||
# endif
|
# else
|
||||||
|
# define _Noreturn
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
1
m4/.gitignore
vendored
1
m4/.gitignore
vendored
@@ -198,3 +198,4 @@
|
|||||||
/libtextstyle.m4
|
/libtextstyle.m4
|
||||||
/rename.m4
|
/rename.m4
|
||||||
/rmdir.m4
|
/rmdir.m4
|
||||||
|
/std-gnu11.m4
|
||||||
|
|||||||
Reference in New Issue
Block a user