From 970364dac00b38333e5b2d91c90d11e80141d265 Mon Sep 17 00:00:00 2001 From: Adhemerval Zanella Date: Tue, 28 Oct 2025 14:08:30 -0300 Subject: [PATCH] Annotate swtich fall-through The clang default to warning for missing fall-through and it does not support all comment-like annotation that gcc does. Use C23 [[fallthrough]] annotation instead. proper attribute instead. Reviewed-by: Collin Funk --- elf/dl-exception.c | 4 ++-- elf/dl-find_object.h | 2 +- elf/dl-lookup.c | 2 +- elf/ldconfig.c | 2 +- elf/rtld.c | 4 ++-- iconv/gconv_charset.c | 2 +- iconvdata/cns11643.h | 2 +- inet/ruserpass.c | 2 +- intl/Makefile | 3 ++- locale/programs/charmap-kw.h | 8 ++++---- locale/programs/charmap.c | 4 ++-- locale/programs/locfile-kw.h | 6 +++--- locale/programs/repertoire.c | 4 ++-- malloc/mcheck-impl.c | 2 +- misc/mntent_r.c | 4 ++-- nis/nis_call.c | 2 +- nptl/pthread_mutex_trylock.c | 2 +- nptl/pthread_mutex_unlock.c | 2 +- nss/digits_dots.c | 2 +- nss/nss_hash.c | 6 +++--- posix/execvpe.c | 1 + posix/fnmatch.c | 2 +- posix/regex_internal.h | 2 +- posix/wordexp.c | 4 ++-- resolv/base64.c | 2 +- resolv/ns_ttl.c | 8 ++++---- resolv/nss_dns/dns-host.c | 4 ++-- resolv/res_hconf.c | 1 + resolv/res_query.c | 6 +++--- stdio-common/printf-parsemb.c | 2 +- stdio-common/vfscanf-internal.c | 4 ++-- sunrpc/svc_tcp.c | 2 +- sunrpc/svc_unix.c | 2 +- sunrpc/xdr.c | 12 ++++++------ sysdeps/aarch64/fpu/fpu_control.h | 1 + sysdeps/ieee754/ldbl-96/e_lgammal_r.c | 4 ++++ sysdeps/x86/cpu-features.c | 6 +++--- sysdeps/x86/readelflib.c | 2 +- sysdeps/x86_64/dl-machine.h | 4 ++-- time/strftime_l.c | 4 ++-- time/strptime_l.c | 4 ++-- 41 files changed, 75 insertions(+), 67 deletions(-) diff --git a/elf/dl-exception.c b/elf/dl-exception.c index 3bdb69662a..f5b88ac0f9 100644 --- a/elf/dl-exception.c +++ b/elf/dl-exception.c @@ -134,7 +134,7 @@ _dl_exception_create_format (struct dl_exception *exception, const char *objname ++p; break; } - /* Fall through. */ + [[fallthrough]]; case 'x': length += INT_WIDTH / 4; break; @@ -219,7 +219,7 @@ _dl_exception_create_format (struct dl_exception *exception, const char *objname ++p; break; } - /* FALLTHROUGH */ + [[fallthrough]]; default: _dl_fatal_printf ("Fatal error:" " invalid format in exception string\n"); diff --git a/elf/dl-find_object.h b/elf/dl-find_object.h index d9d75c4ad9..92be53fb14 100644 --- a/elf/dl-find_object.h +++ b/elf/dl-find_object.h @@ -136,7 +136,7 @@ _dl_find_object_from_map (struct link_map *l, atomic_store_relaxed (&result->sframe, (void *) (ph->p_vaddr + l->l_addr)); read_seg |= 2; - /* Fall through. */ + [[fallthrough]]; default: break; } diff --git a/elf/dl-lookup.c b/elf/dl-lookup.c index c32362da4c..7bf8dfbe2f 100644 --- a/elf/dl-lookup.c +++ b/elf/dl-lookup.c @@ -490,7 +490,7 @@ do_lookup_x (const char *undef_name, unsigned int new_hash, } break; } - /* FALLTHROUGH */ + [[fallthrough]]; case STB_GLOBAL: /* Global definition. Just what we need. */ result->s = sym; diff --git a/elf/ldconfig.c b/elf/ldconfig.c index 39b154c72c..a83f256df2 100644 --- a/elf/ldconfig.c +++ b/elf/ldconfig.c @@ -1151,7 +1151,7 @@ parse_conf_include (const char *config_file, unsigned int lineno, case GLOB_NOSPACE: errno = ENOMEM; - /* Fall through. */ + [[fallthrough]]; case GLOB_ABORTED: if (opt_verbose) error (0, errno, _("%s:%u: cannot read directory %s"), diff --git a/elf/rtld.c b/elf/rtld.c index 8b472e9c0c..299f8dd60e 100644 --- a/elf/rtld.c +++ b/elf/rtld.c @@ -2755,10 +2755,10 @@ print_statistics_item (const char *title, hp_timing_t time, { case 3: *wp++ = *cp++; - /* Fall through. */ + [[fallthrough]]; case 2: *wp++ = *cp++; - /* Fall through. */ + [[fallthrough]]; case 1: *wp++ = '.'; *wp++ = *cp++; diff --git a/iconv/gconv_charset.c b/iconv/gconv_charset.c index 89de93d689..ecf419b093 100644 --- a/iconv/gconv_charset.c +++ b/iconv/gconv_charset.c @@ -47,7 +47,7 @@ find_suffix (char *s) { case '/': slash_count++; - /* Fallthrough */ + [[fallthrough]]; case ',': suffix_term = &s[i]; } diff --git a/iconvdata/cns11643.h b/iconvdata/cns11643.h index d4b6f2b433..8c2c3071d5 100644 --- a/iconvdata/cns11643.h +++ b/iconvdata/cns11643.h @@ -220,7 +220,7 @@ ucs4_to_cns11643 (uint32_t wch, unsigned char *s, size_t avail) if (cp[0] != '\0') break; /* Let's try the other planes. */ - /* Fall through. */ + [[fallthrough]]; case 0x3400 ... 0x4dff: case 0x9f9d ... 0x9fa5: /* Let's try the other planes. */ diff --git a/inet/ruserpass.c b/inet/ruserpass.c index 903fc966fd..be4e024203 100644 --- a/inet/ruserpass.c +++ b/inet/ruserpass.c @@ -125,7 +125,7 @@ next: case DEFAULT: usedefault = 1; - /* FALL THROUGH */ + [[fallthrough]]; case MACHINE: if (!usedefault) { diff --git a/intl/Makefile b/intl/Makefile index 5aa42597f5..1d9365e241 100644 --- a/intl/Makefile +++ b/intl/Makefile @@ -159,7 +159,8 @@ $(objpfx)tst-gettext6.out: $(objpfx)tst-gettext.out CPPFLAGS += -D'LOCALEDIR="$(localedir)"' \ -D'LOCALE_ALIAS_PATH="$(localedir)"' \ - -Wno-unused-but-set-variable + -Wno-unused-but-set-variable \ + -Wno-implicit-fallthrough BISONFLAGS = --yacc --no-lines --name-prefix=__gettext --output $(inst_localedir)/locale.alias: locale.alias $(+force) diff --git a/locale/programs/charmap-kw.h b/locale/programs/charmap-kw.h index 505b364d88..3ae6f2f6f0 100644 --- a/locale/programs/charmap-kw.h +++ b/locale/programs/charmap-kw.h @@ -104,19 +104,19 @@ hash (register const char *str, register size_t len) switch (hval) { default: - hval += asso_values[(unsigned char)str[8]]; - /*FALLTHROUGH*/ + hval += asso_values[(unsigned char)str[8]]; + [[fallthrough]]; case 8: case 7: case 6: case 5: hval += asso_values[(unsigned char)str[4]]; - /*FALLTHROUGH*/ + [[fallthrough]]; case 4: case 3: case 2: hval += asso_values[(unsigned char)str[1]]; - /*FALLTHROUGH*/ + [[fallthrough]]; case 1: hval += asso_values[(unsigned char)str[0]]; break; diff --git a/locale/programs/charmap.c b/locale/programs/charmap.c index 7768a7a7fc..6927f9be7e 100644 --- a/locale/programs/charmap.c +++ b/locale/programs/charmap.c @@ -548,7 +548,7 @@ character sets with locking states are not supported")); state = 4; continue; } - /* FALLTHROUGH */ + [[fallthrough]] ; case 5: if (nowtok != tok_charcode) @@ -712,7 +712,7 @@ only WIDTH definitions are allowed to follow the CHARMAP definition")); state = 95; continue; } - /* Fall through. */ + [[fallthrough]] ; case 96: if (nowtok != tok_number) diff --git a/locale/programs/locfile-kw.h b/locale/programs/locfile-kw.h index 9460a43ab1..dd7ea27615 100644 --- a/locale/programs/locfile-kw.h +++ b/locale/programs/locfile-kw.h @@ -105,18 +105,18 @@ hash (register const char *str, register size_t len) { default: hval += asso_values[(unsigned char)str[8]]; - /*FALLTHROUGH*/ + [[fallthrough]] ; case 8: case 7: case 6: case 5: hval += asso_values[(unsigned char)str[4]]; - /*FALLTHROUGH*/ + [[fallthrough]] ; case 4: case 3: case 2: hval += asso_values[(unsigned char)str[1]]; - /*FALLTHROUGH*/ + [[fallthrough]] ; case 1: hval += asso_values[(unsigned char)str[0]]; break; diff --git a/locale/programs/repertoire.c b/locale/programs/repertoire.c index 7ed8c915dd..591d952fad 100644 --- a/locale/programs/repertoire.c +++ b/locale/programs/repertoire.c @@ -206,7 +206,7 @@ argument to <%s> must be a single character"), /* Otherwise we start reading the character definitions. */ state = 2; - /* FALLTHROUGH */ + [[fallthrough]] ; case 2: /* We are now are in the body. Each line @@ -254,7 +254,7 @@ argument to <%s> must be a single character"), state = 4; continue; } - /* FALLTHROUGH */ + [[fallthrough]] ; case 5: /* We expect a value of the form or where diff --git a/malloc/mcheck-impl.c b/malloc/mcheck-impl.c index a874211e78..6f60c8fa34 100644 --- a/malloc/mcheck-impl.c +++ b/malloc/mcheck-impl.c @@ -389,7 +389,7 @@ __mcheck_initialize (void (*func) (enum mcheck_status), bool in_pedantic) case -1: /* Called before the first malloc was called. */ __debug_free (__debug_malloc (0)); - /* FALLTHROUGH */ + [[fallthrough]] ; case 0: /* Called through the initializer hook. */ __malloc_debug_enable (MALLOC_MCHECK_HOOK); diff --git a/misc/mntent_r.c b/misc/mntent_r.c index f36c2f534e..26e8ade30e 100644 --- a/misc/mntent_r.c +++ b/misc/mntent_r.c @@ -167,10 +167,10 @@ get_mnt_entry (FILE *stream, struct mntent *mp, char *buffer, int bufsiz) { case 0: mp->mnt_freq = 0; - /* Fall through. */ + [[fallthrough]] ; case 1: mp->mnt_passno = 0; - /* Fall through. */ + [[fallthrough]] ; case 2: break; } diff --git a/nis/nis_call.c b/nis/nis_call.c index f77ecec709..357bfadbbc 100644 --- a/nis/nis_call.c +++ b/nis/nis_call.c @@ -324,7 +324,7 @@ __do_niscall3 (dir_binding *dbp, u_long prog, xdrproc_t xargs, caddr_t req, } /* Yes, the missing break is correct. If we doesn't have to start a callback, look if we have to search another server */ - /* Fall through. */ + [[fallthrough]] ; case NIS_LOOKUP: case NIS_ADD: case NIS_MODIFY: diff --git a/nptl/pthread_mutex_trylock.c b/nptl/pthread_mutex_trylock.c index dbb8fcc754..bba550683b 100644 --- a/nptl/pthread_mutex_trylock.c +++ b/nptl/pthread_mutex_trylock.c @@ -68,7 +68,7 @@ ___pthread_mutex_trylock (pthread_mutex_t *mutex) case PTHREAD_MUTEX_TIMED_NP: FORCE_ELISION (mutex, goto elision); - /*FALL THROUGH*/ + [[fallthrough]] ; case PTHREAD_MUTEX_ADAPTIVE_NP: case PTHREAD_MUTEX_ERRORCHECK_NP: if (lll_trylock (mutex->__data.__lock) != 0) diff --git a/nptl/pthread_mutex_unlock.c b/nptl/pthread_mutex_unlock.c index 60bea80d20..ef224c09e5 100644 --- a/nptl/pthread_mutex_unlock.c +++ b/nptl/pthread_mutex_unlock.c @@ -319,7 +319,7 @@ __pthread_mutex_unlock_full (pthread_mutex_t *mutex, int decr) if (mutex->__data.__owner != THREAD_GETMEM (THREAD_SELF, tid) || (mutex->__data.__lock & ~ PTHREAD_MUTEX_PRIO_CEILING_MASK) == 0) return EPERM; - /* FALLTHROUGH */ + [[fallthrough]] ; case PTHREAD_MUTEX_PP_NORMAL_NP: case PTHREAD_MUTEX_PP_ADAPTIVE_NP: diff --git a/nss/digits_dots.c b/nss/digits_dots.c index e27c57233b..7de92344ca 100644 --- a/nss/digits_dots.c +++ b/nss/digits_dots.c @@ -230,7 +230,7 @@ __nss_hostname_digits_dots_context (struct resolv_context *ctx, addr_size = IN6ADDRSZ; break; } - /* FALLTHROUGH */ + [[fallthrough]] ; case AF_INET: /* This is not possible. We cannot represent an IPv6 address diff --git a/nss/nss_hash.c b/nss/nss_hash.c index a0bec72668..f20ff59f26 100644 --- a/nss/nss_hash.c +++ b/nss/nss_hash.c @@ -52,13 +52,13 @@ __nss_hash (const void *keyarg, size_t len) case 0: /* h starts out as zero so no need to include the multiply. */ h = *key++; - /* FALLTHROUGH */ + [[fallthrough]]; case 3: HASHC; - /* FALLTHROUGH */ + [[fallthrough]]; case 2: HASHC; - /* FALLTHROUGH */ + [[fallthrough]]; case 1: HASHC; /* FALLTHROUGH */ diff --git a/posix/execvpe.c b/posix/execvpe.c index 20a178c1d3..52115055df 100644 --- a/posix/execvpe.c +++ b/posix/execvpe.c @@ -149,6 +149,7 @@ __execvpe_common (const char *file, char *const argv[], char *const envp[], up finding no executable we can use, we want to diagnose that we did find one but were denied access. */ got_eacces = true; + [[fallthrough]] ; case ENOENT: case ESTALE: case ENOTDIR: diff --git a/posix/fnmatch.c b/posix/fnmatch.c index 32ad3ff23a..0828509e6a 100644 --- a/posix/fnmatch.c +++ b/posix/fnmatch.c @@ -61,7 +61,7 @@ extern int fnmatch (const char *pattern, const char *string, int flags); #endif #ifdef _LIBC -# if __GNUC__ >= 7 +# if (__GNUC__ >= 7) || (__clang_major__ >= 10) # define FALLTHROUGH __attribute__ ((__fallthrough__)) # else # define FALLTHROUGH ((void) 0) diff --git a/posix/regex_internal.h b/posix/regex_internal.h index 722da1b7d2..6664ec6fd8 100644 --- a/posix/regex_internal.h +++ b/posix/regex_internal.h @@ -834,7 +834,7 @@ re_string_elem_size_at (const re_string_t *pstr, Idx idx) #endif /* RE_ENABLE_I18N */ #ifdef _LIBC -# if __GNUC__ >= 7 +# if (__GNUC__ >= 7) || (__clang_major__ >= 10) # define FALLTHROUGH __attribute__ ((__fallthrough__)) # else # define FALLTHROUGH ((void) 0) diff --git a/posix/wordexp.c b/posix/wordexp.c index a69b732801..88058278b0 100644 --- a/posix/wordexp.c +++ b/posix/wordexp.c @@ -783,7 +783,7 @@ parse_arith (char **word, size_t *word_length, size_t *max_length, case '(': ++paren_depth; - /* Fall through. */ + [[fallthrough]] ; default: expr = w_addchar (expr, &expr_length, &expr_maxlen, words[*offset]); if (expr == NULL) @@ -2103,7 +2103,7 @@ parse_backtick (char **word, size_t *word_length, size_t *max_length, case '\'': squoting = 1 - squoting; - /* Fall through. */ + [[fallthrough]] ; default: comm = w_addchar (comm, &comm_length, &comm_maxlen, words[*offset]); if (comm == NULL) diff --git a/resolv/base64.c b/resolv/base64.c index 11463235c8..b09292e067 100644 --- a/resolv/base64.c +++ b/resolv/base64.c @@ -275,7 +275,7 @@ b64_pton (char const *src, u_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 */ /* diff --git a/resolv/ns_ttl.c b/resolv/ns_ttl.c index d29d9dc00c..e29be12920 100644 --- a/resolv/ns_ttl.c +++ b/resolv/ns_ttl.c @@ -113,13 +113,13 @@ ns_parse_ttl(const char *src, u_long *dst) { ch = toupper(ch); switch (ch) { case 'W': tmp *= 7; - /* Fall through. */ + [[fallthrough]] ; case 'D': tmp *= 24; - /* Fall through. */ + [[fallthrough]] ; case 'H': tmp *= 60; - /* Fall through. */ + [[fallthrough]] ; case 'M': tmp *= 60; - /* Fall through. */ + [[fallthrough]] ; case 'S': break; default: goto einval; } diff --git a/resolv/nss_dns/dns-host.c b/resolv/nss_dns/dns-host.c index 14da73ee1d..d8856653d8 100644 --- a/resolv/nss_dns/dns-host.c +++ b/resolv/nss_dns/dns-host.c @@ -235,7 +235,7 @@ gethostbyname3_context (struct resolv_context *ctx, case EMFILE: case ENFILE: h_errno = NETDB_INTERNAL; - /* Fall through. */ + [[fallthrough]] ; case ECONNREFUSED: case ETIMEDOUT: status = NSS_STATUS_UNAVAIL; @@ -444,7 +444,7 @@ _nss_dns_gethostbyname4_r (const char *name, struct gaih_addrtuple **pat, case EMFILE: case ENFILE: h_errno = NETDB_INTERNAL; - /* Fall through. */ + [[fallthrough]] ; case ECONNREFUSED: case ETIMEDOUT: status = NSS_STATUS_UNAVAIL; diff --git a/resolv/res_hconf.c b/resolv/res_hconf.c index 186af81690..760de69664 100644 --- a/resolv/res_hconf.c +++ b/resolv/res_hconf.c @@ -146,6 +146,7 @@ arg_trimdomain_list (const char *fname, int line_num, const char *args) free (buf); return NULL; } + [[fallthrough]] ; default: break; } diff --git a/resolv/res_query.c b/resolv/res_query.c index bd55453552..1eb2287fee 100644 --- a/resolv/res_query.c +++ b/resolv/res_query.c @@ -277,7 +277,7 @@ __res_context_query (struct resolv_context *ctx, const char *name, || (hp2->rcode == NOERROR && ntohs (hp2->ancount) != 0)) goto success; - /* FALLTHROUGH */ + [[fallthrough]] ; case REFUSED: default: RES_SET_H_ERRNO(statp, NO_RECOVERY); @@ -477,7 +477,7 @@ __res_context_search (struct resolv_context *ctx, switch (statp->res_h_errno) { case NO_DATA: got_nodata++; - /* FALLTHROUGH */ + [[fallthrough]] ; case HOST_NOT_FOUND: /* keep trying */ break; @@ -487,7 +487,7 @@ __res_context_search (struct resolv_context *ctx, got_servfail++; break; } - /* FALLTHROUGH */ + [[fallthrough]] ; default: /* anything else implies that we're done */ done++; diff --git a/stdio-common/printf-parsemb.c b/stdio-common/printf-parsemb.c index a7ba52a9fa..21625036d7 100644 --- a/stdio-common/printf-parsemb.c +++ b/stdio-common/printf-parsemb.c @@ -272,7 +272,7 @@ __parse_one_specmb (const UCHAR_T *format, size_t posn, if (*format != L_('l')) break; ++format; - /* FALLTHROUGH */ + [[fallthrough]] ; case L_('L'): /* doubles are long doubles, and ints are long long ints. */ case L_('q'): diff --git a/stdio-common/vfscanf-internal.c b/stdio-common/vfscanf-internal.c index c6361f74e0..0870a42c4e 100644 --- a/stdio-common/vfscanf-internal.c +++ b/stdio-common/vfscanf-internal.c @@ -915,7 +915,7 @@ __vfscanf_internal (FILE *s, const char *format, va_list argptr, break; } - /* FALLTHROUGH */ + [[fallthrough]]; case L_('C'): if (width == -1) width = 1; @@ -1258,7 +1258,7 @@ __vfscanf_internal (FILE *s, const char *format, va_list argptr, } break; } - /* FALLTHROUGH */ + [[fallthrough]] ; case L_('S'): { diff --git a/sunrpc/svc_tcp.c b/sunrpc/svc_tcp.c index 663b34a71c..948c22978c 100644 --- a/sunrpc/svc_tcp.c +++ b/sunrpc/svc_tcp.c @@ -334,7 +334,7 @@ readtcp (char *xprtptr, char *buf, int len) case -1: if (errno == EINTR) continue; - /*FALLTHROUGH*/ + [[fallthrough]]; case 0: goto fatal_err; default: diff --git a/sunrpc/svc_unix.c b/sunrpc/svc_unix.c index c97880c012..c8559ea265 100644 --- a/sunrpc/svc_unix.c +++ b/sunrpc/svc_unix.c @@ -440,7 +440,7 @@ readunix (char *xprtptr, char *buf, int len) case -1: if (errno == EINTR) continue; - /*FALLTHROUGH*/ + [[fallthrough]] ; case 0: goto fatal_err; default: diff --git a/sunrpc/xdr.c b/sunrpc/xdr.c index a76094d6da..e8752a3e52 100644 --- a/sunrpc/xdr.c +++ b/sunrpc/xdr.c @@ -113,7 +113,7 @@ xdr_int (XDR *xdrs, int *ip) return FALSE; } *ip = (int) l; - /* Fall through. */ + [[fallthrough]] ; case XDR_FREE: return TRUE; } @@ -153,7 +153,7 @@ xdr_u_int (XDR *xdrs, u_int *up) return FALSE; } *up = (u_int) (u_long) l; - /* Fall through. */ + [[fallthrough]] ; case XDR_FREE: return TRUE; } @@ -508,7 +508,7 @@ xdr_enum (XDR *xdrs, enum_t *ep) return FALSE; } *ep = l; - /* Fall through. */ + [[fallthrough]] ; case XDR_FREE: return TRUE; @@ -631,7 +631,7 @@ xdr_bytes (XDR *xdrs, char **cpp, u_int *sizep, u_int maxsize) (void) __fxprintf (NULL, "%s: %s", __func__, _("out of memory\n")); return FALSE; } - /* Fall through. */ + [[fallthrough]] ; case XDR_ENCODE: return xdr_opaque (xdrs, sp, nodesize); @@ -752,7 +752,7 @@ xdr_string (XDR *xdrs, char **cpp, u_int maxsize) { return TRUE; /* already free */ } - /* fall through... */ + [[fallthrough]] ; case XDR_ENCODE: if (sp == NULL) return FALSE; @@ -792,7 +792,7 @@ xdr_string (XDR *xdrs, char **cpp, u_int maxsize) return FALSE; } sp[size] = 0; - /* Fall through. */ + [[fallthrough]] ; case XDR_ENCODE: return xdr_opaque (xdrs, sp, size); diff --git a/sysdeps/aarch64/fpu/fpu_control.h b/sysdeps/aarch64/fpu/fpu_control.h index a93dbf5efa..2ed6ba6b52 100644 --- a/sysdeps/aarch64/fpu/fpu_control.h +++ b/sysdeps/aarch64/fpu/fpu_control.h @@ -20,6 +20,7 @@ #define _AARCH64_FPU_CONTROL_H #include +#include /* Macros for accessing the FPCR and FPSR. */ diff --git a/sysdeps/ieee754/ldbl-96/e_lgammal_r.c b/sysdeps/ieee754/ldbl-96/e_lgammal_r.c index d4fd7f5272..7e373201ee 100644 --- a/sysdeps/ieee754/ldbl-96/e_lgammal_r.c +++ b/sysdeps/ieee754/ldbl-96/e_lgammal_r.c @@ -402,12 +402,16 @@ __ieee754_lgammal_r (long double x, int *signgamp) { case 7: z *= (y + 6.0); /* FALLTHRU */ + [[fallthrough]] ; case 6: z *= (y + 5.0); /* FALLTHRU */ + [[fallthrough]] ; case 5: z *= (y + 4.0); /* FALLTHRU */ + [[fallthrough]] ; case 4: z *= (y + 3.0); /* FALLTHRU */ + [[fallthrough]] ; case 3: z *= (y + 2.0); /* FALLTHRU */ r += __ieee754_logl (z); diff --git a/sysdeps/x86/cpu-features.c b/sysdeps/x86/cpu-features.c index c696a4d1f7..d3409a5b3f 100644 --- a/sysdeps/x86/cpu-features.c +++ b/sysdeps/x86/cpu-features.c @@ -798,7 +798,7 @@ init_cpu_features (struct cpu_features *cpu_features) processor. */ if (stepping > 0xc) break; - /* Fall through. */ + [[fallthrough]] ; case INTEL_BIGCORE_SKYLAKE: /* Disable Intel TSX and enable RTM_ALWAYS_ABORT for processors listed in: @@ -937,7 +937,7 @@ disable_tsx: non-temporal on all Skylake servers. */ cpu_features->preferred[index_arch_Avoid_Non_Temporal_Memset] |= bit_arch_Avoid_Non_Temporal_Memset; - /* fallthrough */ + [[fallthrough]] ; case INTEL_BIGCORE_COMETLAKE: case INTEL_BIGCORE_SKYLAKE: case INTEL_BIGCORE_KABYLAKE: @@ -1091,7 +1091,7 @@ disable_tsx: /* Yongfeng and Shijidadao mircoarch tuning. */ case 0x5b: cpu_features->cachesize_non_temporal_divisor = 2; - /* fallthrough */ + [[fallthrough]] ; case 0x6b: cpu_features->preferred[index_arch_AVX_Fast_Unaligned_Load] &= ~bit_arch_AVX_Fast_Unaligned_Load; diff --git a/sysdeps/x86/readelflib.c b/sysdeps/x86/readelflib.c index acb25d710b..9b9d626176 100644 --- a/sysdeps/x86/readelflib.c +++ b/sysdeps/x86/readelflib.c @@ -44,7 +44,7 @@ process_elf_file (const char *file_name, const char *lib, int *flag, case EM_386: if (elf_header->e_ident[EI_CLASS] == ELFCLASS32) break; - /* Fall through. */ + [[fallthrough]] ; default: error (0, 0, _("%s is for unknown machine %d.\n"), file_name, elf_header->e_machine); diff --git a/sysdeps/x86_64/dl-machine.h b/sysdeps/x86_64/dl-machine.h index 572a1a7395..c765ca14da 100644 --- a/sysdeps/x86_64/dl-machine.h +++ b/sysdeps/x86_64/dl-machine.h @@ -313,7 +313,7 @@ and creates an unsatisfiable circular dependency.\n", { case R_X86_64_JUMP_SLOT: map->l_has_jump_slot_reloc = true; - /* fallthrough */ + [[fallthrough]]; case R_X86_64_GLOB_DAT: *reloc_addr = value; break; @@ -422,7 +422,7 @@ and creates an unsatisfiable circular dependency.\n", /* Set to symbol size plus addend. */ value = sym->st_size; # endif - /* Fall through. */ + [[fallthrough]]; case R_X86_64_32: value += reloc->r_addend; *(unsigned int *) reloc_addr = value; diff --git a/time/strftime_l.c b/time/strftime_l.c index 5cb5f5d213..307e7e8fd6 100644 --- a/time/strftime_l.c +++ b/time/strftime_l.c @@ -1093,7 +1093,7 @@ __strftime_internal (CHAR_T *s, size_t maxsize, const CHAR_T *format, #if !defined _NL_CURRENT && HAVE_STRFTIME format_char = L_('p'); #endif - /* FALLTHROUGH */ + [[fallthrough]] ; case L_('p'): if (change_case) @@ -1433,7 +1433,7 @@ __strftime_internal (CHAR_T *s, size_t maxsize, const CHAR_T *format, case L_('\0'): /* GNU extension: % at end of format. */ --f; - /* Fall through. */ + [[fallthrough]] ; default: /* Unknown format; output the format, including the '%', since this is most likely the right thing to do if a diff --git a/time/strptime_l.c b/time/strptime_l.c index f5e2f4f5d1..7e6f974aeb 100644 --- a/time/strptime_l.c +++ b/time/strptime_l.c @@ -552,7 +552,7 @@ __strptime_internal (const char *rp, const char *fmt, struct tm *tmp, s.decided = raw; } #endif - /* Fall through. */ + [[fallthrough]] ; case 'D': /* Match standard day format. */ if (!recursive (HERE_D_FMT)) @@ -706,7 +706,7 @@ __strptime_internal (const char *rp, const char *fmt, struct tm *tmp, s.decided = raw; } #endif - /* Fall through. */ + [[fallthrough]] ; case 'T': if (!recursive (HERE_T_FMT)) return NULL; -- 2.47.3