From: Paul Eggert Date: Mon, 2 Jan 2017 05:43:26 +0000 (-0800) Subject: dfa: simplify constraint-dependency checking X-Git-Tag: v1.0~6428 X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=e210a3cbaec0ee82a67ff8fc427e21bdd64dba1b;p=gnulib.git dfa: simplify constraint-dependency checking * lib/dfa.c (prev_newline_constraint, prev_letter_constraint) (prev_other_constraint): Remove. (prev_newline_dependent, prev_letter_dependent): Simplify, to avoid an unnecessary bitwise AND operation. --- diff --git a/ChangeLog b/ChangeLog index 85436e1c05..2b8cbc11bc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2017-01-01 Paul Eggert + dfa: simplify constraint-dependency checking + * lib/dfa.c (prev_newline_constraint, prev_letter_constraint) + (prev_other_constraint): Remove. + (prev_newline_dependent, prev_letter_dependent): + Simplify, to avoid an unnecessary bitwise AND operation. + dfa: prefer functions and constants to macros * lib/dfa.c: Prefer constants to macros where either will do. (streq, isasciidigit, newline_constraint) diff --git a/lib/dfa.c b/lib/dfa.c index 5b9de53816..cd600aa1e6 100644 --- a/lib/dfa.c +++ b/lib/dfa.c @@ -175,33 +175,15 @@ succeeds_in_context (int constraint, int prev, int curr) } /* The following describe what a constraint depends on. */ -static int -prev_newline_constraint (int constraint) -{ - return (constraint >> 2) & 0x111; -} -static int -prev_letter_constraint (int constraint) -{ - return (constraint >> 1) & 0x111; -} -static int -prev_other_constraint (int constraint) -{ - return constraint & 0x111; -} - static bool prev_newline_dependent (int constraint) { - return (prev_newline_constraint (constraint) - != prev_other_constraint (constraint)); + return ((constraint ^ constraint >> 2) & 0x111) != 0; } static bool prev_letter_dependent (int constraint) { - return (prev_letter_constraint (constraint) - != prev_other_constraint (constraint)); + return ((constraint ^ constraint >> 1) & 0x111) != 0; } /* Tokens that match the empty string subject to some constraint actually