X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/0e721e7569828defbeb88572e7a1e331ee665006..f9abaa2c4c5c77c5b6bdcfc0149c0af5adc8cc39:/src/conflicts.c diff --git a/src/conflicts.c b/src/conflicts.c index 6d9562bc..e08256a1 100644 --- a/src/conflicts.c +++ b/src/conflicts.c @@ -186,14 +186,13 @@ set_conflicts (state_t *state) for conflicts not resolved above. */ for (i = 0; i < state->nlookaheads; ++i) { + /* FIXME: Here, I need something like `bitset_disjoint_p'. */ for (j = 0; j < ntokens; ++j) if (bitset_test (LA[state->lookaheadsp + i], j) && bitset_test (lookaheadset, j)) conflicts[state->number] = 1; - for (j = 0; j < ntokens; ++j) - if (bitset_test (LA[state->lookaheadsp + i], j)) - bitset_set (lookaheadset, j); + bitset_or (lookaheadset, lookaheadset, LA[state->lookaheadsp + i]); } } @@ -220,7 +219,7 @@ solve_conflicts (void) static int count_sr_conflicts (state_t *state) { - int i, k; + int i; int src_count = 0; shifts *shiftp = state->shifts; @@ -235,9 +234,7 @@ count_sr_conflicts (state_t *state) bitset_set (shiftset, SHIFT_SYMBOL (shiftp, i)); for (i = 0; i < state->nlookaheads; ++i) - for (k = 0; k < ntokens; ++k) - if (bitset_test (LA[state->lookaheadsp + i], k)) - bitset_set (lookaheadset, k); + bitset_or (lookaheadset, lookaheadset, LA[state->lookaheadsp + i]); bitset_and (lookaheadset, lookaheadset, shiftset);