clang-10: use AFS_FALLTHROUGH for case fallthrough 74/14274/9
authorCheyenne Wills <cwills@sinenomine.net>
Mon, 27 Jul 2020 14:33:03 +0000 (08:33 -0600)
committerBenjamin Kaduk <kaduk@mit.edu>
Mon, 27 Jul 2020 16:20:50 +0000 (12:20 -0400)
commit16f1b2f894c28614df0f096be8232b1176e87c70
tree56e2ac7d439885b934444f7dd3eef332c6acb2fa
parente61ab9353e99d3298815296abf6b02c50ebe3df0
clang-10: use AFS_FALLTHROUGH for case fallthrough

Clang-10 will not recognize '/* fallthrough */' as an indicator to
turn off the fallthrough diagnostic due to the lack of a 'break' in a
case statement.  Clang-10 requires the '__attribute__((fallthrough))'
statement to disable the diagnostic.

In addition clang-10 is finding additional locations where fall throughs
occur.

Determine if the compiler supports '__attribute__((fallthrough))' to
disable the implicit fallthrough diagnostic.

Define a new macro 'AFS_FALLTHROUGH' that will disable the fallthrough
diagnostic. Set it as a wrapper for the Linux kernel's 'fallthrough'
macro if available, otherwise set it as a wrapper macro for
'__attribute__((fallthrough))' if the compiler supports it.

Update CODING to document the use of AFS_FALLTHROUGH when needing to
fallthrough between case statements.

Replace the '/* fallthrough */' comments with AFS_FALLTHROUGH, and add
AFS_FALLTHROUGH as needed.

Replace some fallthroughs with a break (or goto) if the flow was was
just to a break (or goto).

e.g.   case x:                 case x:
           somestmt;               somestmt;
                                   break;
       case y:                 case y:
           break;                  break;

Correct a mis-indented brace '}' in src/WINNT/afsd/smb3.c

Note, the clang maintainers have rejected the use of comments as a flag
to turn off the fall through warnings.

Change-Id: Ia5da10fc14fc1874baca035a3cf471e618e0d5f5
Reviewed-on: https://gerrit.openafs.org/14274
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
32 files changed:
CODING
src/WINNT/afsadmsvr/TaAfsAdmSvrGeneral.cpp
src/WINNT/afsd/afskfw.c
src/WINNT/afsd/cm_daemon.c
src/WINNT/afsd/cm_utils.c
src/WINNT/afsd/rpc_srvsvc.c
src/WINNT/afsd/smb.c
src/WINNT/afsd/smb3.c
src/WINNT/afssvrmgr/svr_getdates.cpp
src/WINNT/afssvrmgr/svr_install.cpp
src/WINNT/afssvrmgr/svr_prune.cpp
src/afs/LINUX/osi_export.c
src/afs/LINUX/osi_vnodeops.c
src/aklog/asetkey.c
src/aklog/klog.c
src/butc/dump.c
src/cf/c-attribute.m4
src/cmd/cmd.c
src/config/stds.h
src/opr/jhash.h
src/rx/rx_trace.c
src/rx/xdr.c
src/rxkad/ticket5.c
src/tests/snprintf.c
src/tools/dumpscan/parsevnode.c
src/vfsck/pass2.c
src/vfsck/pass5.c
src/vol/fssync-server.c
src/vol/salvaged.c
src/vol/salvsync-server.c
src/vol/volume.c
src/volser/volprocs.c