Suppress fall through warning in switch statement where the fall trough
is intentional.
Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Michael Adam <obnox@samba.org>
return 0;
}" HAVE_FUNCTION_ATTRIBUTE_FORMAT)
+check_c_source_compiles("
+#define FALL_THROUGH __attribute__((fallthrough))
+
+enum direction_e {
+ UP = 0,
+ DOWN,
+};
+
+int main(void) {
+ enum direction_e key = UP;
+ int i = 10;
+ int j = 0;
+
+ switch (key) {
+ case UP:
+ i = 5;
+ FALL_THROUGH;
+ case DOWN:
+ j = i * 2;
+ break;
+ default:
+ break;
+ }
+
+ return 0;
+}" HAVE_FALLTHROUGH_ATTRIBUTE)
+
# SYSTEM LIBRARIES
check_library_exists(dl dlopen "" HAVE_LIBDL)
#cmakedefine HAVE_DESTRUCTOR_ATTRIBUTE 1
#cmakedefine HAVE_ADDRESS_SANITIZER_ATTRIBUTE 1
#cmakedefine HAVE_FUNCTION_ATTRIBUTE_FORMAT 1
+#cmakedefine HAVE_FALLTHROUGH_ATTRIBUTE 1
/*************************** ENDIAN *****************************/
#define PRINTF_ATTRIBUTE(a,b)
#endif /* HAVE_FUNCTION_ATTRIBUTE_FORMAT */
+#ifndef FALL_THROUGH
+# ifdef HAVE_FALLTHROUGH_ATTRIBUTE
+# define FALL_THROUGH __attribute__ ((fallthrough))
+# else /* HAVE_FALLTHROUGH_ATTRIBUTE */
+# define FALL_THROUGH
+# endif /* HAVE_FALLTHROUGH_ATTRIBUTE */
+#endif /* FALL_THROUGH */
+
#define UWRAP_DLIST_ADD(list,item) do { \
if (!(list)) { \
(item)->prev = NULL; \
switch (lib) {
case UWRAP_LIBNSL:
- /* FALL TROUGH */
+ FALL_THROUGH;
case UWRAP_LIBSOCKET:
- /* FALL TROUGH */
+ FALL_THROUGH;
case UWRAP_LIBC:
handle = uwrap.libc.handle;
if (handle == NULL) {