yacc.c: don't define _Noreturn uselessly

Clang warns:

     aux/x.h:97:11: error: macro name is a reserved identifier
           [-Werror,-Wreserved-id-macro]
     #  define _Noreturn YY_ATTRIBUTE ((__noreturn__))

Reported by Derek Clegg.
http://lists.gnu.org/archive/html/bug-bison/2018-10/msg00024.html

* data/c.m4 (b4_attribute_define): Don't define _Noreturn unconditionally.
* data/glr.c: Ask for _Noreturn.
This commit is contained in:
Akim Demaille
2018-10-23 07:12:09 +02:00
parent ab3dc5415c
commit b5515215c1
2 changed files with 9 additions and 8 deletions

View File

@@ -204,11 +204,12 @@ m4_define([b4_table_value_equals],
## Compiler issues. ## ## Compiler issues. ##
## ----------------- ## ## ----------------- ##
# b4_attribute_define # b4_attribute_define([noreturn])
# ------------------- # -------------------------------
# Provide portable compiler "attributes". # Provide portable compiler "attributes". If "noreturn" is passed, define
# _Noreturn.
m4_define([b4_attribute_define], m4_define([b4_attribute_define],
[#ifndef YY_ATTRIBUTE [[#ifndef YY_ATTRIBUTE
# if (defined __GNUC__ \ # if (defined __GNUC__ \
&& (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
|| defined __SUNPRO_C && 0x5110 <= __SUNPRO_C || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
@@ -226,7 +227,7 @@ m4_define([b4_attribute_define],
# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
#endif #endif
#if !defined _Noreturn \ ]m4_bmatch([$1], [\bnoreturn\b], [[#if !defined _Noreturn \
&& (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
# if defined _MSC_VER && 1200 <= _MSC_VER # if defined _MSC_VER && 1200 <= _MSC_VER
# define _Noreturn __declspec (noreturn) # define _Noreturn __declspec (noreturn)
@@ -235,7 +236,7 @@ m4_define([b4_attribute_define],
# endif # endif
#endif #endif
/* Suppress unused-variable warnings by "using" E. */ ]])[/* Suppress unused-variable warnings by "using" E. */
#if ! defined lint || defined __GNUC__ #if ! defined lint || defined __GNUC__
# define YYUSE(E) ((void) (E)) # define YYUSE(E) ((void) (E))
#else #else
@@ -260,7 +261,7 @@ m4_define([b4_attribute_define],
#ifndef YY_INITIAL_VALUE #ifndef YY_INITIAL_VALUE
# define YY_INITIAL_VALUE(Value) /* Nothing. */ # define YY_INITIAL_VALUE(Value) /* Nothing. */
#endif #endif
]) ]])
# b4_null_define # b4_null_define

View File

@@ -311,7 +311,7 @@ static YYLTYPE yyloc_default][]b4_yyloc_default;])[
} while (yyfalse) } while (yyfalse)
#endif #endif
]b4_attribute_define[ ]b4_attribute_define([noreturn])[
#ifndef YYASSERT #ifndef YYASSERT
# define YYASSERT(Condition) ((void) ((Condition) || (abort (), 0))) # define YYASSERT(Condition) ((void) ((Condition) || (abort (), 0)))