From: Akim Demaille Date: Wed, 28 Nov 2001 14:52:50 +0000 (+0000) Subject: * src/closure.c (closure): No longer optimize the special case X-Git-Tag: before-m4-back-end~245 X-Git-Url: https://git.saurik.com/bison.git/commitdiff_plain/2c4c30aa95ca133b7ba23d4f4977844976975862?ds=inline * src/closure.c (closure): No longer optimize the special case where all the bits of `ruleset[r]' are set to 0, to make the code clearer. --- diff --git a/ChangeLog b/ChangeLog index 2d1da89f..a4cf7406 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2001-11-28 Akim Demaille + + * src/closure.c (closure): No longer optimize the special case + where all the bits of `ruleset[r]' are set to 0, to make the code + clearer. + + 2001-11-28 Akim Demaille * src/closure.c (closure): `r' and `c' are new variables, used to diff --git a/src/closure.c b/src/closure.c index 06c7b532..ad3a5be7 100644 --- a/src/closure.c +++ b/src/closure.c @@ -273,31 +273,24 @@ closure (short *core, int n) c = 0; for (r = 0; r < rulesetsize; ++r) { - if (ruleset[r] == 0) - { - ruleno += BITS_PER_WORD; - } - else - { - int b; + int b; - for (b = 0; b < BITS_PER_WORD; b++) + for (b = 0; b < BITS_PER_WORD; b++) + { + if (ruleset[r] & (1 << b)) { - if (ruleset[r] & (1 << b)) + itemno = rule_table[ruleno].rhs; + while (c < n && core[c] < itemno) { - itemno = rule_table[ruleno].rhs; - while (c < n && core[c] < itemno) - { - itemset[itemsetsize] = core[c]; - itemsetsize++; - c++; - } - itemset[itemsetsize] = itemno; + itemset[itemsetsize] = core[c]; itemsetsize++; + c++; } - - ruleno++; + itemset[itemsetsize] = itemno; + itemsetsize++; } + + ruleno++; } }