summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAkim Demaille <akim@lrde.epita.fr>2015-01-22 19:03:41 +0100
committerAkim Demaille <akim@lrde.epita.fr>2015-01-23 07:52:50 +0100
commita2c525b34c24e790e37d8735c28c708c17cf9f57 (patch)
treef72782057073ff276927f6f09c9c426ed7866e1a
parent658b189348746aa79fba777f021bd7dc13eeabd7 (diff)
downloadbison-a2c525b34c24e790e37d8735c28c708c17cf9f57.tar.gz
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.
-rw-r--r--configure.ac2
-rw-r--r--data/lalr1.cc14
-rw-r--r--src/AnnotationList.c2
-rw-r--r--src/InadequacyList.c2
-rw-r--r--src/ielr.c5
-rw-r--r--src/print.c1
-rw-r--r--src/scan-code.l5
-rw-r--r--src/symlist.c2
-rw-r--r--src/symlist.h2
-rw-r--r--src/symtab.c2
-rw-r--r--src/tables.c2
-rw-r--r--tests/actions.at2
-rw-r--r--tests/calc.at4
-rw-r--r--tests/cxx-type.at2
-rw-r--r--tests/glr-regression.at2
-rw-r--r--tests/named-refs.at4
-rw-r--r--tests/torture.at2
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 <cassert>])[
-# include <vector>
+# include <cstdlib> // std::abort
# include <iostream>
# include <stdexcept>
-# include <string>]b4_defines_if([[
+# include <string>
+# include <vector>]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);