]> git.saurik.com Git - bison.git/commitdiff
build: re-enable compiler warnings, and fix them
authorAkim Demaille <akim@lrde.epita.fr>
Thu, 22 Jan 2015 18:03:41 +0000 (19:03 +0100)
committerAkim Demaille <akim@lrde.epita.fr>
Fri, 23 Jan 2015 06:52:50 +0000 (07:52 +0100)
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.

17 files changed:
configure.ac
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

index 559b50547d6f6e6a658c21e19884b8f23b5ea073..6f20040053f27c971e345b44b220e442118f9acd 100644 (file)
@@ -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'
index 0e0e17ae523d8e308db6e44857083e69560838c2..3773257cb735f0646d14b74060abb93a802e0cd2 100644 (file)
@@ -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 << ": "])[;
index 8d0c7fed25a9ccf05f5503f7f15644bdb0129bec..586ed9b58c7272819f375664ac4b9447d7e48590 100644 (file)
@@ -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
index e827cb0ad0125e9b1066477e835ce20f40639f97..f2e45f4900d09512d7aaef2c6e26a5bcce105ce4 100644 (file)
@@ -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;
 }
 
index d34651b01dbf6571720856e6d3412bd7ec827f56..8b28e67b8ff42ebd12bda128afd6d30b68cf0d61 100644 (file)
@@ -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);
   }
 
index 2540a4bdd3d795c606d5ed7f1211515d663f57e5..6efcc891413ab10e86b2b6e1454afd5149c1f1d5 100644 (file)
@@ -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);
     }
 }
index 308d1d0dfcf6e2fa0b351723c374841ae068b5bd..eeca16161ca6000717c579f7fc915e0ccba031d0 100644 (file)
@@ -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)
index d851463626a47dc5aa2a24ed9acb108857798a43..109c27c919c7a0b32a6c5bfd76c3949653f438e8 100644 (file)
@@ -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;
 }
index aeb4622908246f3204ff789dc516da65bc7285b6..45cb79633f61a74ce75f78c1e023dc75c18b4af9 100644 (file)
@@ -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);
index 0a28b699a7c7fb1449eb13a1629b116b105be6ea..fb025da75367818d6dbe1f647f8e270c2814b755 100644 (file)
@@ -145,7 +145,7 @@ code_props_type_string (code_props_type kind)
     case printer:
       return "%printer";
     }
-  assert (0);
+  abort ();
 }
 
 /*----------------------------------------.
index d6e2dbe49dab061308e4e895823d121cf8572c80..9497b310eaab270bdb81cb596015cb5db93f35e8 100644 (file)
@@ -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++)
             {
index 2671ca5478fb7a58a1c7d3308642b344a4c7cf8f..d538f883e9b6acca4549ce9b3b127c8f88ba092c 100644 (file)
@@ -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)
index 9696c4eeefaf1872f8d0e1a92f833f2fa809e0b1..85170097c470cae649d78bf2086898baa631c549 100644 (file)
@@ -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;
 }
 ]])
index eb11156f8cbd9c4ea7124758bb8b151c11b1d96a..e112a2cf11b954949b2a26f0b2878d3860fce105 100644 (file)
@@ -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 ();
index 71f6e6d56fd7caf22a6d06a74385c27182b6974f..a815008dc7d556dae0c899aecf029c39b89831c5 100644 (file)
@@ -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 ();
 }
index f8df417d22632f705112fbd2262988f629b3577d..17516a6ae44eedaa42126c3e82027c800fb3900b 100644 (file)
@@ -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;
 }
 ]])
index ad9bf9b20db719ace1920926f3c9bf514f434d3b..d6b2806a202702faf57028dd41d6191ca25a0bd6 100644 (file)
@@ -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);