From 4c79dcc3e70b677047582e8559a536f1cfec3c5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Thu, 15 Jul 2021 16:57:47 +0200 Subject: [PATCH] SCons: Disable Clang -Wordered-compare-function-pointers warning It's raised for us on many comparators implemented to be able to store a struct in `Set` or `Map` (who rely on `operator<` internally). In the cases I reviewed we don't actually care about the ordering and we use the struct's function pointers as that's the only distinctive data available. (cherry picked from commit 802810c371a1b0952a3d830e2f5488010f5102b4) --- SConstruct | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/SConstruct b/SConstruct index 529cb1653ae..25fdb16f5cd 100644 --- a/SConstruct +++ b/SConstruct @@ -425,17 +425,21 @@ if selected_platform in platform_list: else: # GCC, Clang version = methods.get_compiler_version(env) or [-1, -1] - gcc_common_warnings = [] + common_warnings = [] if methods.using_gcc(env): - gcc_common_warnings += ["-Wno-misleading-indentation"] + common_warnings += ["-Wno-misleading-indentation"] if version[0] >= 7: - gcc_common_warnings += ["-Wshadow-local"] + common_warnings += ["-Wshadow-local"] + elif methods.using_clang(env): + # We often implement `operator<` for structs of pointers as a requirement + # for putting them in `Set` or `Map`. We don't mind about unreliable ordering. + common_warnings += ["-Wno-ordered-compare-function-pointers"] if env["warnings"] == "extra": # Note: enable -Wimplicit-fallthrough for Clang (already part of -Wextra for GCC) # once we switch to C++11 or later (necessary for our FALLTHROUGH macro). - env.Append(CCFLAGS=["-Wall", "-Wextra", "-Wwrite-strings", "-Wno-unused-parameter"] + gcc_common_warnings) + env.Append(CCFLAGS=["-Wall", "-Wextra", "-Wwrite-strings", "-Wno-unused-parameter"] + common_warnings) env.Append(CXXFLAGS=["-Wctor-dtor-privacy", "-Wnon-virtual-dtor"]) if methods.using_gcc(env): env.Append( @@ -451,9 +455,9 @@ if selected_platform in platform_list: if version[0] >= 9: env.Append(CCFLAGS=["-Wattribute-alias=2"]) elif env["warnings"] == "all": - env.Append(CCFLAGS=["-Wall"] + gcc_common_warnings) + env.Append(CCFLAGS=["-Wall"] + common_warnings) elif env["warnings"] == "moderate": - env.Append(CCFLAGS=["-Wall", "-Wno-unused"] + gcc_common_warnings) + env.Append(CCFLAGS=["-Wall", "-Wno-unused"] + common_warnings) else: # 'no' env.Append(CCFLAGS=["-w"])