git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] Fixes compile warning with -Wimplicit-fallthrough CFLAGS

From
Jacob Keller <jacob.keller@gmail.com>
Date
Jan 23, 2018, 06:31 UTC
Message-ID
<CA+P7+xqfHnsoOq8EPb-4feu8Q6gdRTCeOGRVkSyjNJNtmtiw=Q@mail.gmail.com>
In-Reply-To
<20180123005950.GH26357@sigill.intra.peff.net>
On Mon, Jan 22, 2018 at 4:59 PM, Jeff King <peff@peff.net> wrote:
Show 50 quoted lines
> On Mon, Jan 22, 2018 at 07:54:18PM -0500, Eric Sunshine wrote:
>
>> On Mon, Jan 22, 2018 at 6:51 PM, Elia Pinto <gitter.spiros@gmail.com> wrote:
>> > This patch add explicit fallthrough compiler attribute
>> > when needed on switch case statement eliminating
>> > the compile warning [-Werror=implicit-fallthrough=].
>> > It does this by means of a macro that takes into account
>> > the versions of the compilers that include that attribute.
>> > [...]
>> > Signed-off-by: Elia Pinto <gitter.spiros@gmail.com>
>> > ---
>> > diff --git a/convert.c b/convert.c
>> > @@ -1554,7 +1554,7 @@ static int ident_filter_fn(struct stream_filter *filter,
>> >                 switch (ident->state) {
>> >                 default:
>> >                         strbuf_add(&ident->left, head, ident->state);
>> > -                       /* fallthrough */
>> > +                       GIT_FALLTHROUGH;
>> >                 case IDENT_SKIPPING:
>> >                         /* fallthrough */
>>
>> Why doesn't this /* fallthrough */ deserve the same treatment?
>>
>> >                 case IDENT_DRAINING:
>
> I can't answer that philosophically, but I can tell you why the compiler
> does not complain. :)
>
> Usually case arms with no statements between them are exempt from
> fallthrough warnings. So:
>
>   switch (foo)
>   case 1:
>   case 2:
>   case 3:
>      /* do one thing */
>      break;
>   case 4:
>      /* do another thing */
>      break;
>   }
>
> does not need any annotations for cases 1 and 2 to fallthrough. Which
> means that the original comment was not actually necessary for the
> compiler, though the original author considered it a useful comment.
>
> So there you get into philosophy. Should it be converted to a
> compiler-visible annotation, or is it better left as a comment?
>
> -Peff

I'd personally rather stick to the comment if we can, or use something like "fallthrough;" to make it appear like a keyword, instead of an all caps macro, since at least to my sensibility, the all caps is a bit too crazy.

Also, I would not put one inside an empty case statement that just falls through to the next branch and does nothing special itself.

Thanks, Jake

Previous: Jeff King
Message 7 of 7 in “Fixes compile warning with -Wimplicit-fallthrough CFLAGS”
  1. Fixes compile warning with -Wimplicit-fallthrough CFLAGSElia Pinto, Jan 22, 2018
  2. Jeff KingJan 23, 2018
  3. Junio C HamanoJan 23, 2018
  4. Jeff KingJan 23, 2018
  5. Eric SunshineJan 23, 2018
  6. Jeff KingJan 23, 2018
  7. Jacob KellerJan 23, 2018

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.