forked from OSchip/llvm-project
[cmake] Disable GCC 9's -Wpessimizing-move
Similar to the existing code for disabling GCC's -Wredudant-move, also check for the -Wpessimizing-move option and disable it if possible. This silences another bunch of noisy warnings when building LLVM with GCC 9. As noted for -Wredundant-move, the code can't be fixed to silence the warnings while retaining support for older compilers. Differential Revision: https://reviews.llvm.org/D98942
This commit is contained in:
parent
972b6a3a34
commit
c027553d95
|
@ -690,14 +690,17 @@ if (LLVM_ENABLE_WARNINGS AND (LLVM_COMPILER_IS_GCC_COMPATIBLE OR CLANG_CL))
|
|||
check_cxx_compiler_flag("-Wclass-memaccess" CXX_SUPPORTS_CLASS_MEMACCESS_FLAG)
|
||||
append_if(CXX_SUPPORTS_CLASS_MEMACCESS_FLAG "-Wno-class-memaccess" CMAKE_CXX_FLAGS)
|
||||
|
||||
# Disable -Wredundant-move on GCC>=9. GCC wants to remove std::move in code
|
||||
# like "A foo(ConvertibleToA a) { return std::move(a); }", but this code does
|
||||
# not compile (or uses the copy constructor instead) on clang<=3.8. Clang also
|
||||
# has a -Wredundant-move, but it only fires when the types match exactly, so
|
||||
# we can keep it here.
|
||||
# Disable -Wredundant-move and -Wpessimizing-move on GCC>=9. GCC wants to
|
||||
# remove std::move in code like "A foo(ConvertibleToA a) {
|
||||
# return std::move(a); }", but this code does not compile (or uses the copy
|
||||
# constructor instead) on clang<=3.8. Clang also has a -Wredundant-move and
|
||||
# -Wpessimizing-move, but they only fire when the types match exactly, so we
|
||||
# can keep them here.
|
||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||
check_cxx_compiler_flag("-Wredundant-move" CXX_SUPPORTS_REDUNDANT_MOVE_FLAG)
|
||||
append_if(CXX_SUPPORTS_REDUNDANT_MOVE_FLAG "-Wno-redundant-move" CMAKE_CXX_FLAGS)
|
||||
check_cxx_compiler_flag("-Wpessimizing-move" CXX_SUPPORTS_PESSIMIZING_MOVE_FLAG)
|
||||
append_if(CXX_SUPPORTS_PESSIMIZING_MOVE_FLAG "-Wno-pessimizing-move" CMAKE_CXX_FLAGS)
|
||||
endif()
|
||||
|
||||
# The LLVM libraries have no stable C++ API, so -Wnoexcept-type is not useful.
|
||||
|
|
Loading…
Reference in New Issue