From b5515215c188a48c0a9956a5cb03ddb951870477 Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Tue, 23 Oct 2018 07:12:09 +0200 Subject: [PATCH] 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. --- data/c.m4 | 15 ++++++++------- data/glr.c | 2 +- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/data/c.m4 b/data/c.m4 index 2ec6ceea..2df76e77 100644 --- a/data/c.m4 +++ b/data/c.m4 @@ -204,11 +204,12 @@ m4_define([b4_table_value_equals], ## Compiler issues. ## ## ----------------- ## -# b4_attribute_define -# ------------------- -# Provide portable compiler "attributes". +# b4_attribute_define([noreturn]) +# ------------------------------- +# Provide portable compiler "attributes". If "noreturn" is passed, define +# _Noreturn. m4_define([b4_attribute_define], -[#ifndef YY_ATTRIBUTE +[[#ifndef YY_ATTRIBUTE # if (defined __GNUC__ \ && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C @@ -226,7 +227,7 @@ m4_define([b4_attribute_define], # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) #endif -#if !defined _Noreturn \ +]m4_bmatch([$1], [\bnoreturn\b], [[#if !defined _Noreturn \ && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) # if defined _MSC_VER && 1200 <= _MSC_VER # define _Noreturn __declspec (noreturn) @@ -235,7 +236,7 @@ m4_define([b4_attribute_define], # endif #endif -/* Suppress unused-variable warnings by "using" E. */ +]])[/* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YYUSE(E) ((void) (E)) #else @@ -260,7 +261,7 @@ m4_define([b4_attribute_define], #ifndef YY_INITIAL_VALUE # define YY_INITIAL_VALUE(Value) /* Nothing. */ #endif -]) +]]) # b4_null_define diff --git a/data/glr.c b/data/glr.c index 56788b80..f77da621 100644 --- a/data/glr.c +++ b/data/glr.c @@ -311,7 +311,7 @@ static YYLTYPE yyloc_default][]b4_yyloc_default;])[ } while (yyfalse) #endif -]b4_attribute_define[ +]b4_attribute_define([noreturn])[ #ifndef YYASSERT # define YYASSERT(Condition) ((void) ((Condition) || (abort (), 0)))