From 0ab29b7c200d864b3b0ce8eae26eeceab8112221 Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Fri, 16 Jan 2015 09:25:37 +0100 Subject: [PATCH 01/11] build: avoid infinite recursions on include_next On MacOS X 10.5 PPC with Apple's GCC 4.0.1: % uname -a Darwin aria.cielonegro.org 9.8.0 Darwin Kernel Version 9.8.0: Wed Jul 15 16:57:0 1 PDT 2009; root:xnu-1228.15.4~1/RELEASE_PPC Power Macintosh % gcc --version powerpc-apple-darwin9-gcc-4.0.1 (GCC) 4.0.1 (Apple Inc. build 5493) Copyright (C) 2005 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. building in place enters into an infinite recursion on "#include_next": % gmake V=1 [snip] depbase=`echo lib/math.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\ gcc -std=gnu99 -I. -Ilib -I. -I./lib -g -O2 -MT lib/math.o -MD -MP -MF $depbase.Tpo -c -o lib/math.o lib/math.c &&\ mv -f $depbase.Tpo $depbase.Po In file included from lib/math.h:27, from lib/math.h:27, from lib/math.h:27, from lib/math.h:27, [snip] from lib/math.h:27, from lib/math.h:27, from lib/math.c:3: lib/math.h:27:23: error: #include nested too deeply Makefile:3414: recipe for target 'lib/math.o' failed gmake[2]: *** [lib/math.o] Error 1 Using -I./lib instead of -Ilib fixes the problem. Reported by Pho. * Makefile.am (AM_CPPFLAGS): Use -I./lib instead of -Ilib. --- Makefile.am | 5 +++-- THANKS | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Makefile.am b/Makefile.am index fd3db0f1..b6135cbd 100644 --- a/Makefile.am +++ b/Makefile.am @@ -39,8 +39,9 @@ AM_YFLAGS = -d -v -Werror -Wall -Wno-yacc --report=all # Initialization before completion by local.mk's. AM_CFLAGS = $(WARN_CFLAGS) -# Find builddir/src/scan-code.c etc. -AM_CPPFLAGS = -I. -Ilib -I$(top_srcdir) -I$(top_srcdir)/lib +# Find builddir/src/scan-code.c etc. For some reason "-I./lib" +# instead of "-Ilib" avoids infinite recursions on #include_next. +AM_CPPFLAGS = -I. -I./lib -I$(top_srcdir) -I$(top_srcdir)/lib BUILT_SOURCES = CLEANFILES = DISTCLEANFILES = diff --git a/THANKS b/THANKS index b9849103..875ac961 100644 --- a/THANKS +++ b/THANKS @@ -113,6 +113,7 @@ Peter Fales psfales@lucent.com Peter Hamorsky hamo@upjs.sk Peter Simons simons@cryp.to Petr Machata pmachata@redhat.com +Pho pho@cielonegro.org Piotr Gackiewicz gacek@intertel.com.pl Quentin Hocquet hocquet@gostai.com Quoc Peyrot chojin@lrde.epita.fr From 16832bf546d0d846081ef193e56931b1ebe7e4ab Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Sun, 18 Jan 2015 15:18:38 +0100 Subject: [PATCH 02/11] build: fix some warnings Reported by John Horigan. http://lists.gnu.org/archive/html/bug-bison/2015-01/msg00034.html * src/graphviz.c, src/symtab.h: Address compiler warnings. --- THANKS | 1 + src/graphviz.c | 4 ++-- src/symtab.h | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/THANKS b/THANKS index 875ac961..26bea0a7 100644 --- a/THANKS +++ b/THANKS @@ -66,6 +66,7 @@ Jim Kent jkent@arch.sel.sony.com Jim Meyering jim@meyering.net Joel E. Denny joeldenny@joeldenny.org Johan van Selst johans@stack.nl +John Horigan john@glyphic.com Jonathan Fabrizio jonathan.fabrizio@lrde.epita.fr Jonathan Nieder jrnieder@gmail.com Juan Manuel Guerrero juan.guerrero@gmx.de diff --git a/src/graphviz.c b/src/graphviz.c index e7611b0f..663cf371 100644 --- a/src/graphviz.c +++ b/src/graphviz.c @@ -113,8 +113,8 @@ conclude_red (struct obstack *out, int source, rule_number ruleno, with n the source state and m the rule number. This is because we don't want all the reductions bearing a same rule number to point to the same state, since that is not the desired format. */ - fprintf (fout, " %1$d -> \"%1$dR%2$d%3$s\" [", - source, ruleno, ed); + fprintf (fout, " %d -> \"%dR%d%s\" [", + source, source, ruleno, ed); /* (The lookahead tokens have been added to the beginning of the obstack, in the caller function.) */ diff --git a/src/symtab.h b/src/symtab.h index aa6d65bb..f92407f8 100644 --- a/src/symtab.h +++ b/src/symtab.h @@ -73,12 +73,12 @@ typedef enum declared, } status; -typedef enum code_props_type code_props_type; enum code_props_type { destructor = 0, printer = 1, }; +typedef enum code_props_type code_props_type; enum { CODE_PROPS_SIZE = 2 }; From eaa476a7e9316b0a5cb5d35467865f2ae2ef9a37 Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Mon, 19 Jan 2015 18:24:24 +0100 Subject: [PATCH 03/11] tests: fix C++ conformance Reported by Thomas Jahns. http://lists.gnu.org/archive/html/bug-bison/2015-01/msg00059.html * tests/c++.at (Exception safety): Add missing include. Don't use const_iterator for erase. --- tests/c++.at | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/c++.at b/tests/c++.at index 737037d3..062e5f08 100644 --- a/tests/c++.at +++ b/tests/c++.at @@ -719,6 +719,7 @@ $1 #include // size_t and getenv. #include #include + #include bool debug = false; @@ -751,7 +752,7 @@ $1 ~Object () { log (this, "Object::~Object"); - objects::const_iterator i = instances.find (this); + objects::iterator i = instances.find (this); // Make sure this object is alive. assert (i != instances.end ()); Object::instances.erase (i); From 0b0370ff42af17689da7edf28294a5262e450610 Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Mon, 19 Jan 2015 18:51:54 +0100 Subject: [PATCH 04/11] tests: be more robust to unrecognized synclines, and try to recognize xlc Reported by Thomas Jahns. http://lists.gnu.org/archive/html/bug-bison/2015-01/msg00059.html * tests/synclines.at (AT_SYNCLINES_COMPILE): Rename as... (_AT_SYNCLINES_COMPILE): this. Try to recognize xlc locations. (AT_SYNCLINES_COMPILE): New. Skips the test if we can't read the synclines. --- tests/synclines.at | 47 ++++++++++++++++++++++++++++++++++------------ 1 file changed, 35 insertions(+), 12 deletions(-) diff --git a/tests/synclines.at b/tests/synclines.at index 260e2f9e..00c2fc1d 100644 --- a/tests/synclines.at +++ b/tests/synclines.at @@ -19,13 +19,13 @@ AT_BANNER([[User Actions.]]) -# AT_SYNCLINES_COMPILE(FILE) -# -------------------------- +# _AT_SYNCLINES_COMPILE(FILE) +# --------------------------- # Compile FILE expecting an error, and save in the file stdout the # normalized output. Ignore the exit status, since some compilers # (e.g. c89 on IRIX 6.5) trigger warnings on '#error', instead of # errors. -m4_define([AT_SYNCLINES_COMPILE], +m4_define([_AT_SYNCLINES_COMPILE], [AT_CHECK([$CC $CFLAGS $CPPFLAGS -c $1], [ignore], [], [stderr]) # Transform stderr into something like this: @@ -75,6 +75,12 @@ m4_define([AT_SYNCLINES_COMPILE], # When c++ is used to compiler C, we might have more messages (Clang 3.2): # # clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated +# +# +# xlc reports things like: +# +# "input.yy", line 80.21: 1540-0218 (S) The call does not match any parameter list for "operator<<". +# "/usr/vacpp/include/iosfwd", line 32.6: 1506-205 (S) #error This file to be used only with IBM VisualAge C++ v4 and later compilers AT_CHECK([[$PERL -p -0777 - stderr <<\EOF # 1. Remove useless lines. @@ -92,6 +98,8 @@ AT_CHECK([[$PERL -p -0777 - stderr <<\EOF # 2. Normalize the lines we kept. + # xlc messages. Remove also error identifier (e.g., "1540-0218 (S)"). + s/^"(.*?)", line ([\w.]*): \d+-\d+ \(.\) /$][1:$][2: /gm; # Remove column. s/^([^:]+:\d+)[.:][^:]+:(.+)$/$][1:$][2/gm; # Map all combinations of "error: " and "#error: " to "#error ". @@ -101,13 +109,14 @@ EOF 0, [stdout]) ]) -# AT_TEST(TITLE, INPUT, ERROR-MSG) -# -------------------------------- -# Check that compiling the parser produced from INPUT cause GCC -# to issue ERROR-MSG. -m4_pushdef([AT_TEST], -[AT_SETUP([$1]) -AT_BISON_OPTION_PUSHDEFS + + +# AT_SYNCLINES_COMPILE(FILE) +# -------------------------- +# Compile FILE expecting an error, and save in the file stdout the +# normalized output. If we can't get a trustable location +# from the compiler, just skip the test. +# # It seems impossible to find a generic scheme to check the location # of an error. Even requiring GCC is not sufficient, since for instance # the version modified by Apple: @@ -124,15 +133,29 @@ AT_BISON_OPTION_PUSHDEFS # # | input.y:2: "2" # | cpp-precomp: warning: errors during smart preprocessing, retrying in basic mode - +m4_define([AT_SYNCLINES_COMPILE], +[# Check if we can trust location translation. AT_DATA([syncline.c], [[#error "1" int i; /* avoids -pedantic warning about an empty translation unit. */ ]]) -AT_SYNCLINES_COMPILE([syncline.c]) +_AT_SYNCLINES_COMPILE([syncline.c]) AT_CHECK([[test "`cat stdout`" = 'syncline.c:1: @%:@error "1"' || exit 77]]) +# Then work for real. +_AT_SYNCLINES_COMPILE([$1]) +]) + + +# AT_TEST(TITLE, INPUT, ERROR-MSG) +# -------------------------------- +# Check that compiling the parser produced from INPUT cause GCC +# to issue ERROR-MSG. +m4_pushdef([AT_TEST], +[AT_SETUP([$1]) +AT_BISON_OPTION_PUSHDEFS + AT_DATA([[input.y]], [$2]) AT_BISON_CHECK([-o input.c input.y]) AT_SYNCLINES_COMPILE([input.c]) From 573654ca9e8bc3ad9f5a00820417edcbca6e14dc Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Tue, 20 Jan 2015 20:41:57 +0100 Subject: [PATCH 05/11] c++: reserve 200 slots in the parser's stack This is consistent with what is done with yacc.c and glr.c. Because it also avoids that the stack needs to be resized very soon, it should help keeping tests about destructors more reliable. Indeed, if the stack is created too small, very soon the C++ library needs to enlarge it, which means creating a new one, copying the elements from the initial one onto it, and then destroy the elements of the initial stack: that would be a spurious call to a destructor. Reported by Thomas Jahns. http://lists.gnu.org/archive/html/bug-bison/2015-01/msg00059.html * data/stack.hh (stack::stack): Reserve 200 slots. * tests/c++.at: Remove traces of stack expansions. --- data/stack.hh | 7 +++---- tests/c++.at | 1 - 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/data/stack.hh b/data/stack.hh index e7ff0405..a56e6c74 100644 --- a/data/stack.hh +++ b/data/stack.hh @@ -32,12 +32,12 @@ m4_define([b4_stack_define], stack () : seq_ () { + seq_.reserve (200); } stack (unsigned int n) : seq_ (n) - { - } + {} inline T& @@ -114,8 +114,7 @@ m4_define([b4_stack_define], slice (const S& stack, unsigned int range) : stack_ (stack) , range_ (range) - { - } + {} inline const T& diff --git a/tests/c++.at b/tests/c++.at index 062e5f08..55d7d403 100644 --- a/tests/c++.at +++ b/tests/c++.at @@ -342,7 +342,6 @@ AT_PARSER_CHECK([./list], 0, ]], [[Destroy: "" Destroy: "0" -Destroy: (0) Destroy: 1 Destroy: "1" Destroy: () From a06344172a724834ea865ca2da6f685df584daf5 Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Tue, 20 Jan 2015 20:47:02 +0100 Subject: [PATCH 06/11] tests: fix a title * tests/conflicts.at: De-overquote. --- tests/conflicts.at | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/conflicts.at b/tests/conflicts.at index 03b8fa20..d320442d 100644 --- a/tests/conflicts.at +++ b/tests/conflicts.at @@ -395,7 +395,7 @@ AT_CLEANUP m4_pushdef([AT_CONSISTENT_ERRORS_CHECK], [ -AT_SETUP([[parse.error=verbose and consistent errors: $1]]) +AT_SETUP([[parse.error=verbose and consistent errors: ]$1]) AT_BISON_OPTION_PUSHDEFS([$1]) From 658b189348746aa79fba777f021bd7dc13eeabd7 Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Wed, 21 Jan 2015 18:34:01 +0100 Subject: [PATCH 07/11] tests: c++: fix a C++03 conformance issue This fixes test 241 on xLC: "input.y", line 42.11: 1540-0274 (S) The name lookup for "report" did not find a declaration. "input.y", line 42.11: 1540-1292 (I) Static declarations are not considered for a function call if the function is not qualified. where report is: static void report (std::ostream& yyo, int ival, float fval) { yyo << "ival: " << ival << ", fval: " << fval; } and line 42 is: %printer { report (yyo, $$, $$); } ; It turns out that indeed this function must not be declared static, . Let's put it into an anonymous namespace. Reported by Thomas Jahns. http://lists.gnu.org/archive/html/bug-bison/2015-01/msg00059.html * tests/actions.at (Qualified $$ in actions): Don't use "static", prefer anonymous namespace. --- NEWS | 4 ++++ tests/actions.at | 9 ++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/NEWS b/NEWS index 2e38038e..3bd5d10a 100644 --- a/NEWS +++ b/NEWS @@ -8,6 +8,10 @@ GNU Bison NEWS Fix a compiler warning when no %destructor use $$. +*** Test suites + + Several portability issues in tests were fixed. + * Noteworthy changes in release 3.0.3 (2015-01-15) [stable] ** Bug fixes diff --git a/tests/actions.at b/tests/actions.at index 7220b715..2671ca54 100644 --- a/tests/actions.at +++ b/tests/actions.at @@ -1530,10 +1530,13 @@ AT_DATA_GRAMMAR([[input.y]], ]AT_SKEL_CC_IF([[ # include - static void - report (std::ostream& yyo, int ival, float fval) + namespace { - yyo << "ival: " << ival << ", fval: " << fval; + void + report (std::ostream& yyo, int ival, float fval) + { + yyo << "ival: " << ival << ", fval: " << fval; + } } ]], [[ # include From a2c525b34c24e790e37d8735c28c708c17cf9f57 Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Thu, 22 Jan 2015 19:03:41 +0100 Subject: [PATCH 08/11] build: re-enable compiler warnings, and fix them There are warnings (-Wextra) in generated C++ code: ltlparse.cc: In member function 'ltlyy::parser::symbol_number_type ltlyy::parser::by_state::type_get() const': ltlparse.cc:452:33: warning: enumeral and non-enumeral type in conditional expression return state == empty_state ? empty_symbol : yystos_[state]; Reported by Alexandre Duret-Lutz. It turns out that -Wall and -Wextra were disabled because of a stupid typo. * configure.ac: Fix the stupid typo. * data/lalr1.cc, src/AnnotationList.c, src/InadequacyList.c, * src/ielr.c, src/print.c, src/scan-code.l, src/symlist.c, * src/symlist.h, src/symtab.c, src/tables.c, tests/actions.at, * tests/calc.at, tests/cxx-type.at, tests/glr-regression.at, * tests/named-refs.at, tests/torture.at: Fix warnings, mostly issues about variables used only with assertions, which are disabled with -DNDEBUG. --- configure.ac | 2 +- data/lalr1.cc | 14 +++++++++++--- src/AnnotationList.c | 2 +- src/InadequacyList.c | 2 +- src/ielr.c | 5 ++++- src/print.c | 1 + src/scan-code.l | 5 ++--- src/symlist.c | 2 +- src/symlist.h | 2 +- src/symtab.c | 2 +- src/tables.c | 2 +- tests/actions.at | 2 +- tests/calc.at | 4 ++-- tests/cxx-type.at | 2 +- tests/glr-regression.at | 2 +- tests/named-refs.at | 4 ++-- tests/torture.at | 2 +- 17 files changed, 33 insertions(+), 22 deletions(-) diff --git a/configure.ac b/configure.ac index 559b5054..6f200400 100644 --- a/configure.ac +++ b/configure.ac @@ -81,7 +81,7 @@ AC_ARG_ENABLE([gcc-warnings], [enable_gcc_warnings=no]) AM_CONDITIONAL([ENABLE_GCC_WARNINGS], [test "$enable_gcc_warnings" = yes]) if test "$enable_gcc_warnings" = yes; then - warn_common='-Wall-Wextra -Wno-sign-compare -Wcast-align -Wdocumentation + warn_common='-Wall -Wextra -Wno-sign-compare -Wcast-align -Wdocumentation -Wformat -Wpointer-arith -Wwrite-strings' warn_c='-Wbad-function-cast -Wshadow -Wstrict-prototypes' warn_cxx='-Wnoexcept' diff --git a/data/lalr1.cc b/data/lalr1.cc index 0e0e17ae..3773257c 100644 --- a/data/lalr1.cc +++ b/data/lalr1.cc @@ -149,10 +149,11 @@ b4_variant_if([m4_include(b4_pkgdatadir/[variant.hh])]) m4_define([b4_shared_declarations], [b4_percent_code_get([[requires]])[ ]b4_parse_assert_if([# include ])[ -# include +# include // std::abort # include # include -# include ]b4_defines_if([[ +# include +# include ]b4_defines_if([[ # include "stack.hh" ]b4_bison_locations_if([[# include "location.hh"]])])[ ]b4_variant_if([b4_variant_includes])[ @@ -569,7 +570,10 @@ m4_if(b4_prefix, [yy], [], ]b4_parser_class_name[::symbol_number_type ]b4_parser_class_name[::by_state::type_get () const { - return state == empty_state ? empty_symbol : yystos_[state]; + if (state == empty_state) + return empty_symbol; + else + return yystos_[state]; } inline @@ -622,6 +626,10 @@ m4_if(b4_prefix, [yy], [], std::ostream& yyoutput = yyo; YYUSE (yyoutput); symbol_number_type yytype = yysym.type_get (); + // Avoid a (spurious) G++ 4.8 warning about "array subscript is + // below array bounds". + if (yysym.empty ()) + std::abort (); yyo << (yytype < yyntokens_ ? "token" : "nterm") << ' ' << yytname_[yytype] << " ("]b4_locations_if([ << yysym.location << ": "])[; diff --git a/src/AnnotationList.c b/src/AnnotationList.c index 8d0c7fed..586ed9b5 100644 --- a/src/AnnotationList.c +++ b/src/AnnotationList.c @@ -546,7 +546,7 @@ AnnotationList__compute_from_inadequacies ( AnnotationList__insertInto (annotation_node, &annotation_lists[s->number], s->nitems); - aver (b); + aver (b); (void) b; } /* This aver makes sure the AnnotationList__computeDominantContribution check above diff --git a/src/InadequacyList.c b/src/InadequacyList.c index e827cb0a..f2e45f49 100644 --- a/src/InadequacyList.c +++ b/src/InadequacyList.c @@ -66,7 +66,7 @@ symbol * InadequacyList__getContributionToken (InadequacyList const *self, ContributionIndex i) { - aver (0 <= i && i < self->contributionCount); + aver (0 <= i && i < self->contributionCount); (void) i; return self->inadequacy.conflict.token; } diff --git a/src/ielr.c b/src/ielr.c index d34651b0..8b28e67b 100644 --- a/src/ielr.c +++ b/src/ielr.c @@ -1102,7 +1102,10 @@ ielr (void) else if (STREQ (type, "canonical-lr")) lr_type = LR_TYPE__CANONICAL_LR; else - aver (false); + { + aver (false); + abort (); + } free (type); } diff --git a/src/print.c b/src/print.c index 2540a4bd..6efcc891 100644 --- a/src/print.c +++ b/src/print.c @@ -343,6 +343,7 @@ print_reductions (FILE *out, state *s) || (STREQ (default_reductions, "consistent") && default_reduction_only) || (reds->num == 1 && reds->rules[0]->number == 0)); + (void) default_reduction_only; free (default_reductions); } } diff --git a/src/scan-code.l b/src/scan-code.l index 308d1d0d..eeca1616 100644 --- a/src/scan-code.l +++ b/src/scan-code.l @@ -664,7 +664,7 @@ handle_action_dollar (symbol_list *rule, char *text, location dollar_loc) case LHS_REF: if (!type_name) - type_name = symbol_list_n_type_name_get (rule, dollar_loc, 0); + type_name = symbol_list_n_type_name_get (rule, 0); if (!type_name) { @@ -695,8 +695,7 @@ handle_action_dollar (symbol_list *rule, char *text, location dollar_loc) if (max_left_semantic_context < 1 - n) max_left_semantic_context = 1 - n; if (!type_name && 0 < n) - type_name = - symbol_list_n_type_name_get (effective_rule, dollar_loc, n); + type_name = symbol_list_n_type_name_get (effective_rule, n); if (!type_name) { if (union_seen | tag_seen) diff --git a/src/symlist.c b/src/symlist.c index d8514636..109c27c9 100644 --- a/src/symlist.c +++ b/src/symlist.c @@ -190,7 +190,7 @@ symbol_list_n_get (symbol_list *l, int n) `--------------------------------------------------------------*/ uniqstr -symbol_list_n_type_name_get (symbol_list *l, location loc, int n) +symbol_list_n_type_name_get (symbol_list *l, int n) { return symbol_list_n_get (l, n)->content.sym->type_name; } diff --git a/src/symlist.h b/src/symlist.h index aeb46229..45cb7963 100644 --- a/src/symlist.h +++ b/src/symlist.h @@ -124,7 +124,7 @@ symbol_list *symbol_list_n_get (symbol_list *l, int n); /* Get the data type (alternative in the union) of the value for symbol N in rule RULE. */ -uniqstr symbol_list_n_type_name_get (symbol_list *l, location loc, int n); +uniqstr symbol_list_n_type_name_get (symbol_list *l, int n); /* Check whether the node is a border element of a rule. */ bool symbol_list_null (symbol_list *node); diff --git a/src/symtab.c b/src/symtab.c index 0a28b699..fb025da7 100644 --- a/src/symtab.c +++ b/src/symtab.c @@ -145,7 +145,7 @@ code_props_type_string (code_props_type kind) case printer: return "%printer"; } - assert (0); + abort (); } /*----------------------------------------. diff --git a/src/tables.c b/src/tables.c index d6e2dbe4..9497b310 100644 --- a/src/tables.c +++ b/src/tables.c @@ -698,7 +698,7 @@ pack_vector (vector_number vector) if (ok) { - int loc; + int loc PACIFY_CC (= -1); int k; for (k = 0; k < t; k++) { diff --git a/tests/actions.at b/tests/actions.at index 2671ca54..d538f883 100644 --- a/tests/actions.at +++ b/tests/actions.at @@ -633,7 +633,7 @@ main (int argc, const char *argv[]) { int status; yydebug = !!getenv ("YYDEBUG"); - assert (argc == 2); + assert (argc == 2); (void) argc; source = argv[1]; status = yyparse (); switch (status) diff --git a/tests/calc.at b/tests/calc.at index 9696c4ee..85170097 100644 --- a/tests/calc.at +++ b/tests/calc.at @@ -94,8 +94,8 @@ main (int argc, const char **argv) status = ]AT_NAME_PREFIX[parse (]AT_PARAM_IF([[&result, &count]])[); if (fclose (input)) perror ("fclose"); - assert (global_result == result); - assert (global_count == count); + assert (global_result == result); (void) result; + assert (global_count == count); (void) count; return status; } ]]) diff --git a/tests/cxx-type.at b/tests/cxx-type.at index eb11156f..e112a2cf 100644 --- a/tests/cxx-type.at +++ b/tests/cxx-type.at @@ -127,7 +127,7 @@ declarator : ID int main (int argc, char **argv) { - assert (argc == 2); + assert (argc == 2); (void) argc; if (!freopen (argv[1], "r", stdin)) return 3; return yyparse (); diff --git a/tests/glr-regression.at b/tests/glr-regression.at index 71f6e6d5..a815008d 100644 --- a/tests/glr-regression.at +++ b/tests/glr-regression.at @@ -72,7 +72,7 @@ const char *input = YY_NULLPTR; int main (int argc, const char* argv[]) { - assert (argc == 2); + assert (argc == 2); (void) argc; input = argv[1]; return yyparse (); } diff --git a/tests/named-refs.at b/tests/named-refs.at index f8df417d..17516a6a 100644 --- a/tests/named-refs.at +++ b/tests/named-refs.at @@ -162,8 +162,8 @@ int main (int argc, const char **argv) } status = yyparse (); fclose (input); - assert (global_result == result); - assert (global_count == count); + assert (global_result == result); (void) global_result; (void) result; + assert (global_count == count); (void) global_count; (void) count; return status; } ]]) diff --git a/tests/torture.at b/tests/torture.at index ad9bf9b2..d6b2806a 100644 --- a/tests/torture.at +++ b/tests/torture.at @@ -403,7 +403,7 @@ get_args (int argc, const char **argv) { int res; char *endp; - assert (argc == 2); + assert (argc == 2); (void) argc; res = strtol (argv[1], &endp, 10); assert (argv[1] != endp); assert (0 <= res); From 2646fd012dd6e164eb89ff9f705ac5a75bb3770a Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Fri, 23 Jan 2015 11:27:10 +0100 Subject: [PATCH 09/11] gnulib: update --- gnulib | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnulib b/gnulib index 7585eb3f..ea6cb044 160000 --- a/gnulib +++ b/gnulib @@ -1 +1 @@ -Subproject commit 7585eb3f16ab1e83f1d46ed5bb243488d8c34228 +Subproject commit ea6cb044ca0ab57045900a494a0e4ae39ed5372c From c4e686a1abd817b4d4da5bdd5b3a5540566fd4a0 Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Fri, 23 Jan 2015 13:53:53 +0100 Subject: [PATCH 10/11] version 3.0.4 * NEWS: Record release date. --- NEWS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 3bd5d10a..732da6f7 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,6 @@ GNU Bison NEWS -* Noteworthy changes in release ?.? (????-??-??) [?] +* Noteworthy changes in release 3.0.4 (2015-01-23) [stable] ** Bug fixes From 7ca7a3abf3947fc419cbd63de344c2da739adad0 Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Fri, 23 Jan 2015 14:13:40 +0100 Subject: [PATCH 11/11] maint: post-release administrivia * NEWS: Add header line for next release. * .prev-version: Record previous version. * cfg.mk (old_NEWS_hash): Auto-update. --- .prev-version | 2 +- NEWS | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.prev-version b/.prev-version index 75a22a26..b0f2dcb3 100644 --- a/.prev-version +++ b/.prev-version @@ -1 +1 @@ -3.0.3 +3.0.4 diff --git a/NEWS b/NEWS index 732da6f7..99a6e16c 100644 --- a/NEWS +++ b/NEWS @@ -1,5 +1,8 @@ GNU Bison NEWS +* Noteworthy changes in release ?.? (????-??-??) [?] + + * Noteworthy changes in release 3.0.4 (2015-01-23) [stable] ** Bug fixes