aboutsummaryrefslogtreecommitdiffstats
path: root/support/dfa.c
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2017-05-22 06:20:04 +0300
committerArnold D. Robbins <arnold@skeeve.com>2017-05-22 06:20:04 +0300
commit394c705100366ecea5518ce9cfa0330d495f41b3 (patch)
tree29b216ff6c9d83cfd45e17dae8e6075f5d75a6f2 /support/dfa.c
parent0f9d4355a03d000938d87d71ba62f0ac2717334a (diff)
downloadegawk-394c705100366ecea5518ce9cfa0330d495f41b3.tar.gz
egawk-394c705100366ecea5518ce9cfa0330d495f41b3.tar.bz2
egawk-394c705100366ecea5518ce9cfa0330d495f41b3.zip
Update some support files from GNULIB.
Diffstat (limited to 'support/dfa.c')
-rw-r--r--support/dfa.c24
1 files changed, 15 insertions, 9 deletions
diff --git a/support/dfa.c b/support/dfa.c
index 2003ac55..18c17a5d 100644
--- a/support/dfa.c
+++ b/support/dfa.c
@@ -72,6 +72,14 @@ isasciidigit (char c)
#include "xalloc.h"
#include "localeinfo.h"
+#ifndef FALLTHROUGH
+# if __GNUC__ < 7
+# define FALLTHROUGH ((void) 0)
+# else
+# define FALLTHROUGH __attribute__ ((__fallthrough__))
+# endif
+#endif
+
#ifndef MIN
# define MIN(a,b) ((a) < (b) ? (a) : (b))
#endif
@@ -1661,10 +1669,10 @@ addtok_mb (struct dfa *dfa, token t, char mbprop)
case BACKREF:
dfa->fast = false;
- /* fallthrough */
+ FALLTHROUGH;
default:
dfa->nleaves++;
- /* fallthrough */
+ FALLTHROUGH;
case EMPTY:
dfa->parse.depth++;
break;
@@ -2461,8 +2469,7 @@ dfaanalyze (struct dfa *d, bool searchflag)
copy (&merged, &d->follows[pos[j].index]);
}
}
- /* fallthrough */
-
+ FALLTHROUGH;
case QMARK:
/* A QMARK or STAR node is automatically nullable. */
if (d->tokens[i] != PLUS)
@@ -2752,13 +2759,13 @@ build_state (state_num s, struct dfa *d, unsigned char uc)
else if (d->tokens[pos.index] >= CSET)
{
matches = d->charclasses[d->tokens[pos.index] - CSET];
- if (tstbit (uc, &d->charclasses[d->tokens[pos.index] - CSET]))
+ if (tstbit (uc, &matches))
matched = true;
}
else if (d->tokens[pos.index] == ANYCHAR)
{
matches = d->charclasses[d->canychar];
- if (tstbit (uc, &d->charclasses[d->canychar]))
+ if (tstbit (uc, &matches))
matched = true;
/* ANYCHAR must match with a single character, so we must put
@@ -3378,8 +3385,7 @@ dfa_supported (struct dfa const *d)
case NOTLIMWORD:
if (!d->localeinfo.multibyte)
continue;
- /* fallthrough */
-
+ FALLTHROUGH;
case BACKREF:
case MBCSET:
return false;
@@ -3488,7 +3494,7 @@ dfassbuild (struct dfa *d)
sup->tokens[j++] = EMPTY;
break;
}
- /* fallthrough */
+ FALLTHROUGH;
default:
sup->tokens[j++] = d->tokens[i];
if ((0 <= d->tokens[i] && d->tokens[i] < NOTCHAR)