Cygwin: Add 'fallthrough' pseudo keyword for switch/case use

This patch has been inspired by the Linux kernel patch

  294f69e662d1 compiler_attributes.h: Add 'fallthrough' pseudo keyword for switch/case use

written by Joe Perches <joe AT perches DOT com> based on an idea from
Dan Carpenter <dan DOT carpenter AT oracle DOT com>.  The following text
is from the original log message:

Reserve the pseudo keyword 'fallthrough' for the ability to convert the
various case block /* fallthrough */ style comments to appear to be an
actual reserved word with the same gcc case block missing fallthrough
warning capability.

All switch/case blocks now should end in one of:

	break;
	fallthrough;
	goto <label>;
	return [expression];
	continue;

In C mode, GCC supports the __fallthrough__ attribute since 7.1,
the same time the warning and the comment parsing were introduced.

Cygwin-only: add an explicit -Wimplicit-fallthrough=5 to the build
flags.
This commit is contained in:
Corinna Vinschen
2020-08-05 21:58:22 +02:00
parent 5898a044c3
commit 50ad198085
33 changed files with 67 additions and 63 deletions

View File

@ -282,7 +282,7 @@ b64_pton(char const *src, unsigned char *target, size_t targsize)
return (-1);
ch = *src++; /* Skip the = */
/* Fall through to "single trailing =" case. */
/* FALLTHROUGH */
fallthrough;
case 3: /* Valid, means two bytes of info */
/*

View File

@ -193,7 +193,7 @@ fnmatch1(const char *pattern, const char *string, const char *stringstart,
return (FNM_NOMATCH);
pattern += pclen;
}
/* FALLTHROUGH */
fallthrough;
default:
norm:
string += sclen;

View File

@ -88,7 +88,7 @@ ftw(const char *path, int (*fn)(const char *, const struct stat *, int),
break;
case FTS_DC:
errno = ELOOP;
/* FALLTHROUGH */
fallthrough;
default:
error = -1;
goto done;

View File

@ -81,6 +81,7 @@ static pthread_rwlock_t rwlock = PTHREAD_RWLOCK_INITIALIZER;
#else
#include "../locale/setlocale.h"
#include "winsup.h"
#define SIZE_T_MAX __SIZE_MAX__
#define _close close
#define _open open
@ -233,7 +234,7 @@ catopen(const char *name, int type)
break;
case '%':
++nlspath;
/* FALLTHROUGH */
fallthrough;
default:
if (pathP - path >=
sizeof(path) - 1)

View File

@ -105,7 +105,7 @@ nftw(const char *path, int (*fn)(const char *, const struct stat *, int,
break;
case FTS_DC:
errno = ELOOP;
/* FALLTHROUGH */
fallthrough;
default:
error = -1;
goto done;

View File

@ -179,7 +179,7 @@ next:
case DEFAULT:
usedefault = 1;
/* FALL THROUGH */
fallthrough;
case MACH:
if (!usedefault) {

View File

@ -524,7 +524,7 @@ literal:
case 'k': /* The hour (24-hour clock representation). */
LEGAL_ALT(0);
/* FALLTHROUGH */
fallthrough;
case 'H':
LEGAL_ALT(ALT_O);
bp = conv_num(bp, &tm->tm_hour, 0, 23, ALT_DIGITS);
@ -532,7 +532,7 @@ literal:
case 'l': /* The hour (12-hour clock representation). */
LEGAL_ALT(0);
/* FALLTHROUGH */
fallthrough;
case 'I':
LEGAL_ALT(ALT_O);
bp = conv_num(bp, &tm->tm_hour, 1, 12, ALT_DIGITS);