* 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.
This commit is contained in:
Akim Demaille
2001-11-28 14:52:50 +00:00
parent 576890b7ee
commit 2c4c30aa95
2 changed files with 19 additions and 19 deletions

View File

@@ -1,3 +1,10 @@
2001-11-28 Akim Demaille <akim@epita.fr>
* 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 <akim@epita.fr>
* src/closure.c (closure): `r' and `c' are new variables, used to

View File

@@ -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++;
}
}