Re: Enable -Wstrict-prototypes and -Wold-style-definition by default

Bertrand Drouvot <bertranddrouvot.pg@gmail.com>

From: Bertrand Drouvot <bertranddrouvot.pg@gmail.com>
To: Peter Eisentraut <peter@eisentraut.org>
Cc: pgsql-hackers@lists.postgresql.org
Date: 2026-03-27T10:07:40Z
Lists: pgsql-hackers
Hi,

On Fri, Mar 27, 2026 at 08:38:45AM +0100, Peter Eisentraut wrote:
> The first three patches have been committed.
> 
> On 24.03.26 08:16, Bertrand Drouvot wrote:
> > 0004:
> > 
> > --- a/meson.build
> > +++ b/meson.build
> > @@ -2199,6 +2199,7 @@ unroll_loops_cflags = cc.get_supported_arguments(['-funroll-loops'])
> >   common_warning_flags = [
> >     '-Wmissing-prototypes',
> > +  '-Wold-style-declaration',
> > 
> > Nit, what about adding it with (as the comment is also accurate for the new one)?
> > 
> > "
> > # These are C-only flags, supported in all C11-capable GCC/Clang versions.
> > cflags_warn += cc.get_supported_arguments(['-Wstrict-prototypes', '-Wold-style-definition'])
> > "
> 
> Yeah, makes sense to collect the C-only flags together.  But now that I'm
> looking at this again, the comment "supported in all C11-capable GCC/Clang
> versions" is not relevant here, it was only relevant in configure.ac because
> there we don't actually test for these flags but require them without
> testing. 

Right, it was a bit misleading.

> What do you think about the attached patch, which reorganizes this
> a bit more?

+# C-only warnings
+c_warning_flags = [
+  '-Wmissing-prototypes',
+  '-Wold-style-declaration',
+  '-Wold-style-definition',
+  '-Wstrict-prototypes',
+]

That looks ok but I wonder if we should also add '-Werror=vla' to it (
and remove it from common_warning_flags) to be in sync with what configure.ac
is doing:

"
  PGAC_PROG_CC_CFLAGS_OPT([-Werror=vla])
  # -Wvla is not applicable for C++
"

Regards,

-- 
Bertrand Drouvot
PostgreSQL Contributors Team
RDS Open Source Databases
Amazon Web Services: https://aws.amazon.com



Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Add warning option -Wold-style-declaration

  2. configure: Apply -Werror=vla to C++ as well as C

  3. Enable warning like -Wstrict-prototypes on MSVC as well

  4. Remove compiler warning option -Wendif-labels

  5. Disable warnings in system headers in MSVC

  6. Fix -Wstrict-prototypes warning in ecpg_init_sqlca() declaration.