]> git.saurik.com Git - bison.git/blobdiff - src/reduce.c
Merge remote-tracking branch 'origin/maint'
[bison.git] / src / reduce.c
index c45ce6ea8bde132cc45bf5b6e4b65053962ed1f7..736cbb6a7149ad2ab8179f3102bf5c923a6c83a3 100644 (file)
@@ -1,6 +1,6 @@
 /* Grammar reduction for Bison.
 
 /* Grammar reduction for Bison.
 
-   Copyright (C) 1988-1989, 2000-2003, 2005-2011 Free Software
+   Copyright (C) 1988-1989, 2000-2003, 2005-2012 Free Software
    Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
    Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
@@ -29,7 +29,6 @@
 #include "system.h"
 
 #include <bitset.h>
 #include "system.h"
 
 #include <bitset.h>
-#include <quotearg.h>
 
 #include "complain.h"
 #include "files.h"
 
 #include "complain.h"
 #include "files.h"
@@ -286,13 +285,12 @@ reduce_grammar_tables (void)
 static void
 nonterminals_reduce (void)
 {
 static void
 nonterminals_reduce (void)
 {
-  symbol_number i, n;
-
   /* Map the nonterminals to their new index: useful first, useless
      afterwards.  Kept for later report.  */
 
   symbol_number *nontermmap = xnmalloc (nvars, sizeof *nontermmap);
   /* Map the nonterminals to their new index: useful first, useless
      afterwards.  Kept for later report.  */
 
   symbol_number *nontermmap = xnmalloc (nvars, sizeof *nontermmap);
-  n = ntokens;
+  symbol_number n = ntokens;
+  symbol_number i;
   for (i = ntokens; i < nsyms; i++)
     if (bitset_test (V, i))
       nontermmap[i - ntokens] = n++;
   for (i = ntokens; i < nsyms; i++)
     if (bitset_test (V, i))
       nontermmap[i - ntokens] = n++;
@@ -300,8 +298,10 @@ nonterminals_reduce (void)
     if (!bitset_test (V, i))
       {
         nontermmap[i - ntokens] = n++;
     if (!bitset_test (V, i))
       {
         nontermmap[i - ntokens] = n++;
-        warn_at (symbols[i]->location, _("nonterminal useless in grammar: %s"),
-                 symbols[i]->tag);
+        if (symbols[i]->status != used)
+          warn_at (symbols[i]->location,
+                   _("nonterminal useless in grammar: %s"),
+                   symbols[i]->tag);
       }
 
 
       }