Dear Akim, Many thanks for a quick reaction!
I'll try to check the tarball later today, though it will require some time (I need to figure out how to build it on a windows machine). Also, I did have a few warnings in the bison-generated parsers, and will report those too. Best regards, Victor. > -----Original Message----- > From: Akim Demaille [mailto:[email protected]] > Sent: Monday, April 08, 2013 10:59 AM > To: victor khomenko > Cc: '[email protected]' > Subject: Re: __attribute__((__unused__)) problem > > > Le 8 avr. 2013 à 10:28, Akim Demaille <[email protected]> a écrit : > > > Hi Victor, > > > > You are right, this is a serious issue :( I will prepare a 2.7.1 > > asap. Could you please help me making sure it works properly with > > Microsoft compilers? Actually, it would be nice if you could also > > help me kill some compiler warnings. Please, have a look at the > > following message. > > > > http://lists.gnu.org/archive/html/bug-bison/2013-03/msg00003.html > > I will install this is {maint}. Could you please confirm > that the following tarball addresses your issue? Thanks in > advance! > > http://www.lrde.epita.fr/~akim/download/bison-2.7.7-a565f.tar.gz > > commit 80a2826e69b201f9a64c3f18825afe879472efb4 > Author: Akim Demaille <[email protected]> > Date: Mon Apr 8 10:39:48 2013 +0200 > > yacc.c: do not use __attribute__ unprotected > > Reported by Victor Khomenko. > http://lists.gnu.org/archive/html/bug-bison/2013-04/msg00001.html > > * data/glr.c (YYUSE, __attribute__): Fuse their definition into... > * data/c.m4 (b4_attribute_define): this new macro. > * data/yacc.c, data/glr.c: Use it. > > diff --git a/NEWS b/NEWS > index 8da9cf9..b499cc1 100644 > --- a/NEWS > +++ b/NEWS > @@ -2,6 +2,11 @@ GNU Bison NEWS > > * Noteworthy changes in release ?.? (????-??-??) [?] > > +** Bug fixes > + > +*** Fix compiler attribute portability (yacc.c) > + > + With locations enabled, __attribute__ was used unprotected. > > * Noteworthy changes in release 2.7 (2012-12-12) [stable] > > diff --git a/THANKS b/THANKS > index ed978d3..9b24974 100644 > --- a/THANKS > +++ b/THANKS > @@ -121,6 +121,7 @@ Tom Tromey [email protected] > Tommy Nordgren [email protected] > Troy A. Johnson [email protected] > Tys Lefering [email protected] > +Victor Khomenko [email protected] > Vin Shelton [email protected] > W.C.A. Wijngaards [email protected] > Wayne Green [email protected] > diff --git a/data/c.m4 b/data/c.m4 > index dc3d303..a1dc2c5 100644 > --- a/data/c.m4 > +++ b/data/c.m4 > @@ -187,9 +187,29 @@ m4_define([b4_table_value_equals], > [(!!(($2) == ($3)))])]) > > > -## ---------## > -## Values. ## > -## ---------## > +## ----------------- ## > +## Compiler issues. ## > +## ----------------- ## > + > +# b4_attribute_define > +# ------------------- > +# Provide portability for __attribute__. > +m4_define([b4_attribute_define], > +[#ifndef __attribute__ > +/* This feature is available in gcc versions 2.5 and later. */ > +# if (! defined __GNUC__ || __GNUC__ < 2 \ > + || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)) > +# define __attribute__(Spec) /* empty */ > +# endif > +#endif > + > +/* Suppress unused-variable warnings by "using" E. */ > +#if ! defined lint || defined __GNUC__ > +# define YYUSE(E) ((void) (E)) > +#else > +# define YYUSE(E) /* empty */ > +#endif > +]) > > > # b4_null_define > @@ -405,7 +425,7 @@ m4_define([b4_c_arg], > ## ----------- ## > > # b4_sync_start(LINE, FILE) > -# ----------------------- > +# ------------------------- > m4_define([b4_sync_start], [[#]line $1 $2]) > > > diff --git a/data/glr.c b/data/glr.c > index 02a76c2..958b040 100644 > --- a/data/glr.c > +++ b/data/glr.c > @@ -246,13 +246,6 @@ b4_percent_code_get[]dnl > # endif > #endif > > -/* Suppress unused-variable warnings by "using" E. */ > -#if ! defined lint || defined __GNUC__ > -# define YYUSE(E) ((void) (E)) > -#else > -# define YYUSE(E) /* empty */ > -#endif > - > /* Identity function, used to suppress warnings about constant conditions. > */ > #ifndef lint > # define YYID(N) (N) > @@ -291,17 +284,7 @@ b4_percent_code_get[]dnl > # define YYLONGJMP(Env, Val) (longjmp (Env, Val), YYASSERT (0)) > #endif > > -/*-----------------. > -| GCC extensions. | > -`-----------------*/ > - > -#ifndef __attribute__ > -/* This feature is available in gcc versions 2.5 and later. */ > -# if (! defined __GNUC__ || __GNUC__ < 2 \ > - || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)) > -# define __attribute__(Spec) /* empty */ > -# endif > -#endif > +]b4_attribute_define[ > > #ifndef YYASSERT > # define YYASSERT(Condition) ((void) ((Condition) || (abort (), 0))) > diff --git a/data/yacc.c b/data/yacc.c > index b34549f..abc949b 100644 > --- a/data/yacc.c > +++ b/data/yacc.c > @@ -447,12 +447,7 @@ typedef short int yytype_int16; > # endif > #endif > > -/* Suppress unused-variable warnings by "using" E. */ > -#if ! defined lint || defined __GNUC__ > -# define YYUSE(E) ((void) (E)) > -#else > -# define YYUSE(E) /* empty */ > -#endif > +]b4_attribute_define[ > > /* Identity function, used to suppress warnings about constant conditions. > */ > #ifndef lint
