aboutsummaryrefslogtreecommitdiff
path: root/src/pl/plperl/plperl.h
diff options
context:
space:
mode:
authorAndres Freund <andres@anarazel.de>2022-12-29 12:47:29 -0800
committerAndres Freund <andres@anarazel.de>2023-01-02 15:51:03 -0800
commitf0e13802f196bc1044d52669ae5ef0b32e3a4db2 (patch)
treea5726b38bc45f63408e1e9219d222787a319f91d /src/pl/plperl/plperl.h
parent039567eb57ee5a5ab1a2ad2352316b2d31e7150e (diff)
downloadpostgresql-f0e13802f196bc1044d52669ae5ef0b32e3a4db2.tar.gz
postgresql-f0e13802f196bc1044d52669ae5ef0b32e3a4db2.zip
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: https://postgr.es/m/20221228182455.hfdwd22zztvkojy2@awork3.anarazel.de
Diffstat (limited to 'src/pl/plperl/plperl.h')
-rw-r--r--src/pl/plperl/plperl.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/pl/plperl/plperl.h b/src/pl/plperl/plperl.h
index 8619ff91f53..48ad7a1257a 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