This is an automated email from the ASF dual-hosted git repository.
apitrou pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow.git
The following commit(s) were added to refs/heads/master by this push:
new 9d1bbaff55 ARROW-17436: [C++] Use -O2 instead of -O3 for RELEASE
builds (#13661)
9d1bbaff55 is described below
commit 9d1bbaff55e9a25ab8d04f0b70cd4c820a01bea8
Author: Wes McKinney <[email protected]>
AuthorDate: Wed Aug 17 02:18:20 2022 -0500
ARROW-17436: [C++] Use -O2 instead of -O3 for RELEASE builds (#13661)
Motivated by investigation in #13654. To be discussed
Lead-authored-by: Antoine Pitrou <[email protected]>
Co-authored-by: Wes McKinney <[email protected]>
Signed-off-by: Antoine Pitrou <[email protected]>
---
cpp/cmake_modules/SetupCxxFlags.cmake | 30 +++++++++++++++++++++++-------
1 file changed, 23 insertions(+), 7 deletions(-)
diff --git a/cpp/cmake_modules/SetupCxxFlags.cmake
b/cpp/cmake_modules/SetupCxxFlags.cmake
index 0a40ebe48a..abd5635a35 100644
--- a/cpp/cmake_modules/SetupCxxFlags.cmake
+++ b/cpp/cmake_modules/SetupCxxFlags.cmake
@@ -595,27 +595,42 @@ endif()
# For CMAKE_BUILD_TYPE=Debug
# -ggdb: Enable gdb debugging
# For CMAKE_BUILD_TYPE=FastDebug
-# Same as DEBUG, except with some optimizations on.
+# Same as Debug, except with some optimizations on.
# For CMAKE_BUILD_TYPE=Release
-# -O3: Enable all compiler optimizations
-# Debug symbols are stripped for reduced binary size. Add
-# -DARROW_CXXFLAGS="-g" to add them
+# -O2: Enable all compiler optimizations
+# Debug symbols are stripped for reduced binary size.
+# For CMAKE_BUILD_TYPE=RelWithDebInfo
+# Same as Release, except with debug symbols enabled.
+
if(NOT MSVC)
+ string(REPLACE "-O3" "" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
+ string(REPLACE "-O3" "" CMAKE_CXX_FLAGS_RELWITHDEBINFO
+ "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
+
+ set(RELEASE_FLAGS "-O2 -DNDEBUG")
+ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+ set(RELEASE_FLAGS "${RELEASE_FLAGS} -ftree-vectorize")
+ endif()
+
if(ARROW_GGDB_DEBUG)
set(ARROW_DEBUG_SYMBOL_TYPE "gdb")
set(C_FLAGS_DEBUG "-g${ARROW_DEBUG_SYMBOL_TYPE} -O0")
set(C_FLAGS_FASTDEBUG "-g${ARROW_DEBUG_SYMBOL_TYPE} -O1")
+ set(C_FLAGS_RELWITHDEBINFO "-g${ARROW_DEBUG_SYMBOL_TYPE} ${RELEASE_FLAGS}")
set(CXX_FLAGS_DEBUG "-g${ARROW_DEBUG_SYMBOL_TYPE} -O0")
set(CXX_FLAGS_FASTDEBUG "-g${ARROW_DEBUG_SYMBOL_TYPE} -O1")
+ set(CXX_FLAGS_RELWITHDEBINFO "-g${ARROW_DEBUG_SYMBOL_TYPE}
${RELEASE_FLAGS}")
else()
set(C_FLAGS_DEBUG "-g -O0")
set(C_FLAGS_FASTDEBUG "-g -O1")
+ set(C_FLAGS_RELWITHDEBINFO "-g ${RELEASE_FLAGS}")
set(CXX_FLAGS_DEBUG "-g -O0")
set(CXX_FLAGS_FASTDEBUG "-g -O1")
+ set(CXX_FLAGS_RELWITHDEBINFO "-g ${RELEASE_FLAGS}")
endif()
- set(C_FLAGS_RELEASE "-O3 -DNDEBUG")
- set(CXX_FLAGS_RELEASE "-O3 -DNDEBUG")
+ set(C_FLAGS_RELEASE "${RELEASE_FLAGS}")
+ set(CXX_FLAGS_RELEASE "${RELEASE_FLAGS}")
endif()
set(C_FLAGS_PROFILE_GEN "${CXX_FLAGS_RELEASE} -fprofile-generate")
@@ -630,7 +645,8 @@ if("${CMAKE_BUILD_TYPE}" STREQUAL "DEBUG")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${C_FLAGS_DEBUG}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX_FLAGS_DEBUG}")
elseif("${CMAKE_BUILD_TYPE}" STREQUAL "RELWITHDEBINFO")
-
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${C_FLAGS_RELWITHDEBINFO}")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX_FLAGS_RELWITHDEBINFO}")
elseif("${CMAKE_BUILD_TYPE}" STREQUAL "FASTDEBUG")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${C_FLAGS_FASTDEBUG}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX_FLAGS_FASTDEBUG}")