diff mbox series

Makefile: Convert -Wimplicit-fallthrough to -Wimplicit-fallthrough=2

Message ID 20190829120215.1977-1-msuchanek@suse.de (mailing list archive)
State New, archived
Headers show
Series Makefile: Convert -Wimplicit-fallthrough to -Wimplicit-fallthrough=2 | expand

Commit Message

Michal Suchanek Aug. 29, 2019, 12:02 p.m. UTC
From gcc documentation:

-Wimplicit-fallthrough=0
  disables the warning altogether.
-Wimplicit-fallthrough=1
  matches .* regular expression, any comment is used as fallthrough comment.
-Wimplicit-fallthrough=2
  case insensitively matches .*falls?[ \t-]*thr(ough|u).* regular expression.
-Wimplicit-fallthrough=3
  case sensitively matches one of the following regular expressions:
   -fallthrough
   @fallthrough@
   lint -fallthrough[ \t]*
   [ \t.!]*(ELSE,? |INTENTIONAL(LY)? )?
   FALL(S | |-)?THR(OUGH|U)[ \t.!]*(-[^\n\r]*)?
   [ \t.!]*(Else,? |Intentional(ly)? )?
   Fall((s | |-)[Tt]|t)hr(ough|u)[ \t.!]*(-[^\n\r]*)?
   [ \t.!]*([Ee]lse,? |[Ii]ntentional(ly)? )?
   fall(s | |-)?thr(ough|u)[ \t.!]*(-[^\n\r]*)?
-Wimplicit-fallthrough=4
  case sensitively matches one of the following regular expressions:
   -fallthrough
   @fallthrough@
   lint -fallthrough[ \t]*
   [ \t]*FALLTHR(OUGH|U)[ \t]*
-Wimplicit-fallthrough=5
  doesn’t recognize any comments as fallthrough comments, only attributes disable the warning.

In particular the default value of 3 does not match the comments like
/* falls through to do foobar */
generating suprious warnings on properly annotated code.

Signed-off-by: Michal Suchanek <msuchanek@suse.de>
---
 Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Joe Perches Aug. 30, 2019, 11:09 a.m. UTC | #1
On Thu, 2019-08-29 at 14:02 +0200, Michal Suchanek wrote:
> In particular the default value of 3 does not match the comments like
> /* falls through to do foobar */

How many comments are there like this in the kernel?

Also you have to deal with gcc/clang differences.
As far as I know, clang doesn't take a value for this.
Miguel Ojeda Aug. 30, 2019, 12:12 p.m. UTC | #2
On Fri, Aug 30, 2019 at 1:09 PM Joe Perches <joe@perches.com> wrote:
>
> On Thu, 2019-08-29 at 14:02 +0200, Michal Suchanek wrote:
> > In particular the default value of 3 does not match the comments like
> > /* falls through to do foobar */
>
> How many comments are there like this in the kernel?

+1 Given we are trying to move to attr-only and therefore
-Wimplicit-fallthrough=5, going back a level needs to be backed by a
good argument. It would be way better to fix those comments instead.

Cheers,
Miguel
Gustavo A. R. Silva Aug. 31, 2019, 5:12 a.m. UTC | #3
On 8/29/19 7:02 AM, Michal Suchanek wrote:
> From gcc documentation:
> 
> -Wimplicit-fallthrough=0
>   disables the warning altogether.
> -Wimplicit-fallthrough=1
>   matches .* regular expression, any comment is used as fallthrough comment.
> -Wimplicit-fallthrough=2
>   case insensitively matches .*falls?[ \t-]*thr(ough|u).* regular expression.
> -Wimplicit-fallthrough=3
>   case sensitively matches one of the following regular expressions:
>    -fallthrough
>    @fallthrough@
>    lint -fallthrough[ \t]*
>    [ \t.!]*(ELSE,? |INTENTIONAL(LY)? )?
>    FALL(S | |-)?THR(OUGH|U)[ \t.!]*(-[^\n\r]*)?
>    [ \t.!]*(Else,? |Intentional(ly)? )?
>    Fall((s | |-)[Tt]|t)hr(ough|u)[ \t.!]*(-[^\n\r]*)?
>    [ \t.!]*([Ee]lse,? |[Ii]ntentional(ly)? )?
>    fall(s | |-)?thr(ough|u)[ \t.!]*(-[^\n\r]*)?
> -Wimplicit-fallthrough=4
>   case sensitively matches one of the following regular expressions:
>    -fallthrough
>    @fallthrough@
>    lint -fallthrough[ \t]*
>    [ \t]*FALLTHR(OUGH|U)[ \t]*
> -Wimplicit-fallthrough=5
>   doesn’t recognize any comments as fallthrough comments, only attributes disable the warning.
> 
> In particular the default value of 3 does not match the comments like
> /* falls through to do foobar */
> generating suprious warnings on properly annotated code.
> 

NACK

How many of those case do you see? if any...

In any case, those comments can be easily transformed to:

/* falls through - to do foobar */

like in this case:

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d2d833e0bf2bad221a955626b942b38312630894

Also, notice that code in linux-next is already ahead... :

https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=e2079e93f562c7f7a030eb7642017ee5eabaaa10

--
Gustavo
diff mbox series

Patch

diff --git a/Makefile b/Makefile
index f125625efd60..641ec413c2a6 100644
--- a/Makefile
+++ b/Makefile
@@ -846,7 +846,7 @@  NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include)
 KBUILD_CFLAGS += -Wdeclaration-after-statement
 
 # Warn about unmarked fall-throughs in switch statement.
-KBUILD_CFLAGS += $(call cc-option,-Wimplicit-fallthrough,)
+KBUILD_CFLAGS += $(call cc-option,-Wimplicit-fallthrough=2,)
 
 # Variable Length Arrays (VLAs) should not be used anywhere in the kernel
 KBUILD_CFLAGS += -Wvla