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}")

Reply via email to