]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Suppress Clang -Wimplicit-fallthrough warnings
authorH.J. Lu <hjl.tools@gmail.com>
Sun, 22 Dec 2024 21:12:00 +0000 (05:12 +0800)
committerH.J. Lu <hjl.tools@gmail.com>
Sun, 22 Dec 2024 22:28:55 +0000 (06:28 +0800)
Since Clang doesn't properly handle

/* FALLTHROUGH */

in elf/tst-align2.c nor

/* fall through */

in misc/tst-tsearch.c

tst-align2.c:100:9: error: unannotated fall-through between switch labels [-Werror,-Wimplicit-fallthrough]
  100 |         case 'A':
      |         ^
tst-align2.c:100:9: note: insert '__attribute__((fallthrough));' to silence this warning
  100 |         case 'A':
      |         ^
      |         __attribute__((fallthrough));
tst-align2.c:100:9: note: insert 'break;' to avoid fall-through
  100 |         case 'A':
      |         ^
      |         break;

suppress them when compiled with Clang.

Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
Reviewed-by: Sam James <sam@gentoo.org>
elf/tst-align2.c
misc/tst-tsearch.c

index c73ea5a5fe8b6aebea42adef94231a7d3253a241..c49ed70c176891a5e5be25b2819aef0af97d6bcc 100644 (file)
@@ -22,6 +22,7 @@
 #include <sys/wait.h>
 #include <tst-stack-align.h>
 #include <unistd.h>
+#include <libc-diag.h>
 
 static int res, fds[2], result;
 static bool test_destructors;
@@ -91,6 +92,8 @@ do_test (void)
   int des_seen = 0, dso_des_seen = 0;
   while ((len = TEMP_FAILURE_RETRY (read (fds[0], &c, 1))) > 0)
     {
+      DIAG_PUSH_NEEDS_COMMENT_CLANG;
+      DIAG_IGNORE_NEEDS_COMMENT_CLANG (3.2, "-Wimplicit-fallthrough");
       switch (c)
         {
         case 'B':
@@ -112,6 +115,7 @@ do_test (void)
           result = 1;
           break;
         }
+      DIAG_POP_NEEDS_COMMENT_CLANG;
     }
 
   close (fds[0]);
index 2ca561dd7dc7d5c13ec59a550dd303d6cde09819..2a8f13f774c59a84a50d750730e4b15a748f533f 100644 (file)
@@ -26,6 +26,7 @@
 #include <search.h>
 #include <tst-stack-align.h>
 #include <support/check.h>
+#include <libc-diag.h>
 
 #define SEED 0
 #define BALANCED 1
@@ -286,6 +287,8 @@ mangle_tree (enum order how, enum action what, void **root, int lag)
          abort ();
        }
 
+      DIAG_PUSH_NEEDS_COMMENT_CLANG;
+      DIAG_IGNORE_NEEDS_COMMENT_CLANG (3.2, "-Wimplicit-fallthrough");
       switch (what)
        {
        case build_and_del:
@@ -331,6 +334,7 @@ mangle_tree (enum order how, enum action what, void **root, int lag)
          break;
 
        }
+      DIAG_POP_NEEDS_COMMENT_CLANG;
     }
 }