Re: consider -Wmissing-variable-declarations

Peter Eisentraut <peter@eisentraut.org>

From: Peter Eisentraut <peter@eisentraut.org>
To: pgsql-hackers <pgsql-hackers@postgresql.org>
Cc: Heikki Linnakangas <hlinnaka@iki.fi>, Andres Freund <andres@anarazel.de>
Date: 2024-07-26T09:07:25Z
Lists: pgsql-hackers

Attachments

I have committed all of the fixes that I had previously posted, but 
before actually activating the warning option, I found another small 
hiccup with the Bison files.

Before Bison 3.4, the generated parser implementation files run afoul of 
-Wmissing-variable-declarations (in spite of commit ab61c40bfa2) because 
declarations for yylval and possibly yylloc are missing.  The generated 
header files contain an extern declaration, but the implementation files 
don't include the header files.  Since Bison 3.4, the generated 
implementation files automatically include the generated header files, 
so then it works.

To make this work with older Bison versions as well, I made a patch to 
include the generated header file from the .y file.

(With older Bison versions, the generated implementation file contains 
effectively a copy of the header file pasted in, so including the header 
file is redundant.  But we know this works anyway because the core 
grammar uses this arrangement already.)

Commits

  1. Use CXXFLAGS instead of CFLAGS for linking C++ code

  2. Add -Wmissing-variable-declarations to the standard compilation flags

  3. Include bison header files into implementation files

  4. Fix -Wmissing-variable-declarations warnings for float.c special case

  5. Add extern declarations for Bison global variables

  6. Move all extern declarations for GUC variables to header files

  7. Move extern declarations for EXEC_BACKEND to header files

  8. Get rid of a global variable

  9. Add missing includes for some global variables

  10. Convert some extern variables to static

  11. Improve some global variable declarations

  12. Remove useless extern keywords