public inbox for [email protected]  
help / color / mirror / Atom feed
From: Peter Eisentraut <[email protected]>
To: Tom Lane <[email protected]>
Cc: Jelte Fennema-Nio <[email protected]>
Cc: pgsql-hackers <[email protected]>
Subject: Re: enable fallthrough warnings on clang
Date: Tue, 7 Apr 2026 16:31:49 +0200
Message-ID: <[email protected]> (raw)
In-Reply-To: <[email protected]>
References: <[email protected]>
	<CAGECzQTs7qXSs8ztAFHCN=KB8SA_zDxO8CZ5+zBwq7zVOXbKKg@mail.gmail.com>
	<[email protected]>
	<[email protected]>
	<[email protected]>

On 06.04.26 23:31, Tom Lane wrote:
> Peter Eisentraut <[email protected]> writes:
>> I have committed this patch set.  I also added a test into the C++ module.
> 
> BF member ayu is failing said test:
> 
> 
> ccache clang++-4.0 -std=gnu++11 -Wall -Wpointer-arith -Werror=vla -Wmissing-format-attribute -Wimplicit-fallthrough -Wformat-security -fno-strict-aliasing -fwrapv -g -O2 -fPIC -fvisibility=hidden -fvisibility-inlines-hidden -I. -I. -I../../../../src/include -D_GNU_SOURCE  -I/usr/include/libxml2     -c -o test_cplusplusext.o test_cplusplusext.cpp
> test_cplusplusext.cpp:66:3: warning: unannotated fall-through between switch labels [-Wimplicit-fallthrough]
>                  case 2:
>                  ^
> test_cplusplusext.cpp:66:3: note: insert '[[clang::fallthrough]];' to silence this warning
>                  case 2:
>                  ^
>                  [[clang::fallthrough]];
> test_cplusplusext.cpp:66:3: note: insert 'break;' to avoid fall-through
>                  case 2:
>                  ^
>                  break;
> 1 warning generated.
> 
> 
> I don't know if it's worth catering to this extremely old
> clang version ...

It appears that we could satisfy clang 6 through 9 with something like

#elif defined(__clang__)
#define pg_fallthrough [[clang::fallthrough]]
#else

Clang >=10 support the existing #elif __has_attribute(fallthrough) branch.

But AFAICT, clang 5 and older are completely broken in this regard, 
because they react to the presence of [[clang::fallthrough]] with a 
syntax error ("error: expected expression").  Not even clang's own 
example code[0] works.

[0]: 
https://releases.llvm.org/5.0.2/tools/clang/docs/AttributeReference.html#fallthrough-clang-fallthrou...

Also, this only appears to affect C++.  In C mode, before clang 10, the 
warning option -Wimplicit-fallthrough doesn't appear to do anything.






view thread (6+ messages)  latest in thread

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected], [email protected], [email protected]
  Subject: Re: enable fallthrough warnings on clang
  In-Reply-To: <[email protected]>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox