From 51b4a04cd02d4b1b2aea65ae42a65d59bc51ab20 Mon Sep 17 00:00:00 2001 From: Paul Hilfinger Date: Wed, 6 Nov 2002 02:46:08 +0000 Subject: [PATCH] src/tables.c (matching_state): Don't allow states to match if either has GLR conflict entries. ChangeLog: update for this and Hilfinger's preceding test-suite addition. --- ChangeLog | 11 +++++++++++ src/tables.c | 12 +++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index d3ff5695..a211e961 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2002-11-04 Paul Hilfinger + + * src/tables.c (matching_state): Don't allow states to match if + either has GLR conflict entries. + 2002-11-05 Paul Eggert Scan <% and %> digraphs in C code as POSIX 1003.1-2001 requires. @@ -184,6 +189,12 @@ * src/system.h: Don't use #ifdef/#ifndef on HAVE_ values, only #if. +2002-10-29 Paul Hilfinger + + * tests/glr-regr1.at: New test for reported regressions. + * tests/testsuite.at: Add glr-regr1.at test. + * tests/Makefile.am: Add glr-regr1.at test. + 2002-10-24 Paul Eggert Version 1.75a. diff --git a/src/tables.c b/src/tables.c index 333e789c..84afd1cd 100644 --- a/src/tables.c +++ b/src/tables.c @@ -610,6 +610,15 @@ matching_state (vector_number_t vector) t = tally[i]; w = width[i]; + /* If VECTOR has GLR conflicts, return -1 */ + if (conflict_tos[i] != NULL) + { + int j; + for (j = 0; j < t; j += 1) + if (conflict_tos[i][j] != 0) + return -1; + } + for (prev = vector - 1; prev >= 0; prev--) { vector_number_t j = order[prev]; @@ -622,7 +631,8 @@ matching_state (vector_number_t vector) return -1; for (k = 0; match && k < t; k++) - if (tos[j][k] != tos[i][k] || froms[j][k] != froms[i][k]) + if (tos[j][k] != tos[i][k] || froms[j][k] != froms[i][k] + || (conflict_tos[j] != NULL && conflict_tos[j][k] != 0)) match = 0; if (match) -- 2.45.2