perl: Hide warnings inside perl.h when using gcc compatible compiler
authorAndres Freund <andres@anarazel.de>
Thu, 29 Dec 2022 20:47:29 +0000 (12:47 -0800)
committerAndres Freund <andres@anarazel.de>
Mon, 2 Jan 2023 23:51:05 +0000 (15:51 -0800)
commit99f8bc335cbed43d64ed1e440a7fa43a8746a683
treeaf7266d3237780123d8b87fe72daf5c3589bbf81
parent982b9b1eba8d809cd677009d15ca045cea890c69
perl: Hide warnings inside perl.h when using gcc compatible compiler

New versions of perl trigger warnings within perl.h with our compiler
flags. At least -Wdeclaration-after-statement, -Wshadow=compatible-local are
known to be problematic.

To avoid these warnings, conditionally use #pragma GCC system_header before
including plperl.h.

Alternatively, we could add the include paths for problematic headers with
-isystem, but that is a larger hammer and is harder to search for.

A more granular alternative would be to use #pragma GCC diagnostic
push/ignored/pop, but gcc warns about unknown warnings being ignored, so every
to-be-ignored-temporarily compiler warning would require its own pg_config.h
symbol and #ifdef.

As the warnings are voluminous, it makes sense to backpatch this change. But
don't do so yet, we first want gather buildfarm coverage - it's e.g. possible
that some compiler claiming to be gcc compatible has issues with the pragma.

Author: Andres Freund <andres@anarazel.de>
Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Discussion: Discussion: http://postgr.es/m/20221228182455.hfdwd22zztvkojy2@awork3.anarazel.de
src/include/c.h
src/pl/plperl/plperl.h