From 7b5dec760f7d7cb8df0fe10051a6aca806581957 Mon Sep 17 00:00:00 2001 From: Andres Freund Date: Thu, 29 Dec 2022 12:47:29 -0800 Subject: 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 Reviewed-by: Tom Lane Discussion: Discussion: https://postgr.es/m/20221228182455.hfdwd22zztvkojy2@awork3.anarazel.de --- src/pl/plperl/plperl.h | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src/pl/plperl/plperl.h') diff --git a/src/pl/plperl/plperl.h b/src/pl/plperl/plperl.h index bba7f2afe34..30fb5aa2e1b 100644 --- a/src/pl/plperl/plperl.h +++ b/src/pl/plperl/plperl.h @@ -70,6 +70,15 @@ #define HAS_BOOL 1 #endif +/* + * Newer versions of the perl headers trigger a lot of warnings with our + * compiler flags (at least -Wdeclaration-after-statement, + * -Wshadow=compatible-local are known to be problematic). The system_header + * pragma hides warnings from within the rest of this file, if supported. + */ +#ifdef HAVE_PRAGMA_GCC_SYSTEM_HEADER +#pragma GCC system_header +#endif /* * Get the basic Perl API. We use PERL_NO_GET_CONTEXT mode so that our code -- cgit v1.2.3