Use warning option -Wshadow=local Change the existing -Wshadow=compatible-local to -Wshadow=local. This covers more cases than before. In particular, some types are assignable to each other, such as char * and const char *, or bool and some integer type, but they are not "compatible" in the C sense, so they are missed by the previous warning setting, but they are really the same basic problem.
The warnings were already fixed in commit f9fc9a78a36. This just enables the compiler option. But: The LLVM headers are not clean for this option, so we need to disable this option for those headers. We do this by also detecting in configure and meson the negative form of the warning option and applying it when compiling the respective files, similar to how other per-file warning disabling already works. This technically loses the previous -Wshadow=compatible-local checking of the LLVM-using files, but this worked only by accident anyway and there is no guarantee that future LLVM versions wouldn't run afoul of that warning level. The variables are intentionally named "...shadow", not "...shadow_local" or similar, so that other shadow warning option variants could be substituted easily. In the long run, a better solution might be to use -isystem for the LLVM include directories, as was attempted in commit 704ef84ef23 but then reverted in 7a0aa99e51c, because porting that logic from meson accurately to configure is complicated and fragile and hard to test and maintain. Discussion: https://www.postgresql.org/message-id/flat/84b6f128-91f5-480e-8a9e-7d0e8f538cea%40eisentraut.org Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/3ee0edb9169ff7b46bc858062007bb97c7cc1ae7 Modified Files -------------- configure | 187 +++++++++++++++++++++------------------ configure.ac | 16 +++- meson.build | 9 +- src/Makefile.global.in | 1 + src/backend/jit/llvm/Makefile | 2 +- src/backend/jit/llvm/meson.build | 2 +- src/makefiles/meson.build | 2 + 7 files changed, 127 insertions(+), 92 deletions(-)
