From 076ab0334d8fb98adc5d58cf140b42f9f53568b3 Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Wed, 5 Dec 2001 09:43:53 +0000 Subject: [PATCH] * src/reduce.c (reduce_grammar_tables): No longer disable the removal of useless rules via CPP but via `if (0)', so that the compiler still check the code is valid. For instance, it should have noticed `rline' no longer exists: use the `line' member of rule_t. * src/gram.c (dummy, rline): Remove, unused. --- ChangeLog | 10 ++++++++++ src/gram.c | 29 +++++++++++++---------------- src/reduce.c | 52 +++++++++++++++++++++++++++++----------------------- 3 files changed, 52 insertions(+), 39 deletions(-) diff --git a/ChangeLog b/ChangeLog index da1a94c1..c7064232 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2001-12-05 Akim Demaille + + * src/reduce.c (reduce_grammar_tables): No longer disable the + removal of useless rules via CPP but via `if (0)', so that the + compiler still check the code is valid. + For instance, it should have noticed `rline' no longer exists: use + the `line' member of rule_t. + * src/gram.c (dummy, rline): Remove, unused. + + 2001-12-05 Akim Demaille * src/output.c (pack_vector): Use assert, not berror. diff --git a/src/gram.c b/src/gram.c index c45c84a0..9db02d8b 100644 --- a/src/gram.c +++ b/src/gram.c @@ -1,30 +1,28 @@ /* Allocate input grammar variables for bison, Copyright 1984, 1986, 1989, 2001 Free Software Foundation, Inc. -This file is part of Bison, the GNU Compiler Compiler. + This file is part of Bison, the GNU Compiler Compiler. -Bison is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. + Bison is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. -Bison is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. + Bison is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. -You should have received a copy of the GNU General Public License -along with Bison; see the file COPYING. If not, write to -the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. */ + You should have received a copy of the GNU General Public License + along with Bison; see the file COPYING. If not, write to + the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ #include "system.h" #include "gram.h" #include "reader.h" -void dummy PARAMS((void)); - /* comments for these variables are in gram.h */ int nitems; @@ -41,7 +39,6 @@ short *sprec = NULL; short *rassoc = NULL; short *sassoc = NULL; short *token_translations = NULL; -short *rline = NULL; int start_symbol; diff --git a/src/reduce.c b/src/reduce.c index 87a2a1a9..d8ea5ed6 100644 --- a/src/reduce.c +++ b/src/reduce.c @@ -264,28 +264,35 @@ inaccessable_symbols (void) static void reduce_grammar_tables (void) { -/* This is turned off because we would need to change the numbers - in the case statements in the actions file. */ -#if 0 - /* remove useless productions */ - if (nuseless_productions > 0) - { - short np, pn, ni, pi; + /* This is turned off because we would need to change the numbers in + the case statements in the actions file. - np = 0; - ni = 0; - for (pn = 1; pn <= nrules; pn++) - { + We don't disable it via CPP so that it is still checked with the + rest of the code, to avoid its becoming completely obsolete. + + FIXME: I think the comment above demonstrates this code must be + turned off for *semantic* parser, not in the general case. Try + to understand this better --akim. */ + + if (0) + /* remove useless productions */ + if (nuseless_productions > 0) + { + short np, pn, ni, pi; + + np = 0; + ni = 0; + for (pn = 1; pn <= nrules; pn++) if (BITISSET (P, pn)) { np++; if (pn != np) { - rule_table[np].lhs = rule_table[pn].lhs; - rline[np] = rline[pn]; - rule_table[np].prec = rule_table[pn].prec; + rule_table[np].lhs = rule_table[pn].lhs; + rule_table[np].line = rule_table[pn].line; + rule_table[np].prec = rule_table[pn].prec; rule_table[np].assoc = rule_table[pn].assoc; - rule_table[np].rhs = rule_table[pn].rhs; + rule_table[np].rhs = rule_table[pn].rhs; if (rule_table[np].rhs != ni) { pi = rule_table[np].rhs; @@ -300,16 +307,15 @@ reduce_grammar_tables (void) while (ritem[ni++] >= 0); } } - } - ritem[ni] = 0; - nrules -= nuseless_productions; - nitems = ni; - /* Is it worth it to reduce the amount of memory for the - grammar? Probably not. */ + ritem[ni] = 0; + nrules -= nuseless_productions; + nitems = ni; + + /* Is it worth it to reduce the amount of memory for the + grammar? Probably not. */ + } - } -#endif /* 0 */ /* Disable useless productions. */ if (nuseless_productions > 0) { -- 2.45.2