Whamcloud - gitweb
LU-15492 build: fallthrough macro for pre/post gcc-7 08/47708/2
authorShaun Tancheff <shaun.tancheff@hpe.com>
Thu, 23 Jun 2022 06:44:47 +0000 (23:44 -0700)
committerOleg Drokin <green@whamcloud.com>
Tue, 5 Jul 2022 22:13:48 +0000 (22:13 +0000)
gcc-7.5 on openSUSE 15:
   error: this statement may fall through [-Werror=implicit-fallthrough=]

Use the __attribute__((fallthrough)) for gcc-7 and later.
and use a no op statement for earlier gcc where the fallthrough
attribute is not available.

Lustre-change: https://review.whamcloud.com/46357
Lustre-commit: 7b54fc7b1615f23a1ad9da84ba8e289de1f22d70

Test-Parameters: trivial
Fixes: 5549b1b9e0 ("LU-15220 lustre: use 'fallthrough' pseudo keyword for switch")
Signed-off-by: Shaun Tancheff <shaun.tancheff@hpe.com>
Change-Id: Ib72f5996149c738805f15e354e1e1606d981ce29
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Petros Koutoupis <petros.koutoupis@hpe.com>
Reviewed-by: Jian Yu <yujian@whamcloud.com>
Reviewed-by: Patrick Farrell <pfarrell@whamcloud.com>
Reviewed-on: https://review.whamcloud.com/47708
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Yang Sheng <ys@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lnet/include/lnet/lib-lnet.h
lustre/include/lustre/lustreapi.h
lustre/include/lustre_compat.h
lustre/utils/gss/gss_util.h

index 11b4330..223c6d3 100644 (file)
@@ -110,7 +110,11 @@ extern struct lnet the_lnet;                       /* THE network */
 #endif
 
 #ifndef fallthrough
-#define fallthrough do {} while (0)  /* fallthrough */
+# if defined(__GNUC__) && __GNUC__ >= 7
+#  define fallthrough  __attribute__((fallthrough)) /* fallthrough */
+# else
+#  define fallthrough do {} while (0)  /* fallthrough */
+# endif
 #endif
 
 int choose_ipv4_src(__u32 *ret,
index 0284da0..4f79fbd 100644 (file)
@@ -62,7 +62,11 @@ extern "C" {
 #endif
 
 #ifndef fallthrough
-#define fallthrough do {} while (0)  /* fallthrough */
+# if defined(__GNUC__) && __GNUC__ >= 7
+#  define fallthrough  __attribute__((fallthrough)) /* fallthrough */
+# else
+#  define fallthrough do {} while (0)  /* fallthrough */
+# endif
 #endif
 
 typedef struct statx lstatx_t;
index ccd0960..6338b52 100644 (file)
@@ -600,7 +600,11 @@ static inline bool is_root_inode(struct inode *inode)
 #endif
 
 #ifndef fallthrough
-#define fallthrough do {} while (0)  /* fallthrough */
+# if defined(__GNUC__) && __GNUC__ >= 7
+#  define fallthrough  __attribute__((fallthrough)) /* fallthrough */
+# else
+#  define fallthrough do {} while (0)  /* fallthrough */
+# endif
 #endif
 
 static inline void ll_security_release_secctx(char *secdata, u32 seclen)
index a251fca..07b0f30 100644 (file)
 #include "write_bytes.h"
 
 #ifndef fallthrough
-#define fallthrough do {} while (0)  /* fallthrough */
+# if defined(__GNUC__) && __GNUC__ >= 7
+#  define fallthrough  __attribute__((fallthrough)) /* fallthrough */
+# else
+#  define fallthrough do {} while (0)  /* fallthrough */
+# endif
 #endif
 
 extern char *this_realm;