From c85409d821350a5a19e1654217299a4a16eec581 Mon Sep 17 00:00:00 2001 From: Patrick Donnelly Date: Fri, 12 Apr 2019 14:42:57 -0700 Subject: [PATCH] CMakeLists: add std::move warnings in gcc9 Suggested by: https://developers.redhat.com/blog/2019/04/12/understanding-when-not-to-stdmove-in-c/ Clang support: http://releases.llvm.org/3.7.0/tools/clang/docs/ReleaseNotes.html#id4 Signed-off-by: Patrick Donnelly --- src/CMakeLists.txt | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 0c5d02377bfe..fa31e60c78f1 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,4 +1,5 @@ include(GetGitRevisionDescription) +include(CheckCXXCompilerFlag) include(GNUInstallDirs) # for erasure and compressor plugins @@ -36,6 +37,14 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wnon-virtual-dtor") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unknown-pragmas") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-ignored-qualifiers") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unknown-pragmas") +CHECK_CXX_COMPILER_FLAG("-Wpessimizing-move" COMPILER_SUPPORTS_PESSIMIZING_MOVE) +if(COMPILER_SUPPORTS_PESSIMIZING_MOVE) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wpessimizing-move") +endif() +CHECK_CXX_COMPILER_FLAG("-Wredundant-move" COMPILER_SUPPORTS_REDUNDANT_MOVE) +if(COMPILER_SUPPORTS_REDUNDANT_MOVE) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wredundant-move") +endif() if(CMAKE_CXX_COMPILER_ID STREQUAL GNU) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -rdynamic") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wstrict-null-sentinel -Woverloaded-virtual") @@ -106,7 +115,6 @@ endif() # require c++17 if(CMAKE_VERSION VERSION_LESS "3.8") - include(CheckCXXCompilerFlag) CHECK_CXX_COMPILER_FLAG("-std=c++17" COMPILER_SUPPORTS_CXX17) if(NOT COMPILER_SUPPORTS_CXX17) message(FATAL_ERROR -- 2.47.3