Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 15 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -337,12 +337,25 @@ if(TEST_SUITE_COLLECT_STATS)
list(APPEND CFLAGS -save-stats=obj)
list(APPEND CXXFLAGS -save-stats=obj)
# Collect stats for LTO step too.
if (${CMAKE_C_FLAGS} MATCHES ".*-flto.*" AND
${CMAKE_CXX_FLAGS} MATCHES ".*-flto.*")
if ((${CMAKE_C_FLAGS} MATCHES ".*-flto.*" AND
${CMAKE_CXX_FLAGS} MATCHES ".*-flto.*") OR
CMAKE_INTERPROCEDURAL_OPTIMIZATION)
list(APPEND LDFLAGS -save-stats=obj)
endif()
endif()

# When CMAKE_INTERPROCEDURAL_OPTIMIZATION is set, CMake implicitly uses
# -flto=thin on Clang, but -flto=auto on GCC. Append -flto=auto on Clang so they
# are equivalent. This needs to be done in CFLAGS/CXXFLAGS/LDFLAGS so it appears
# after -flto=thin and overrides it.
# https://gitlab.kitware.com/cmake/cmake/-/blob/b65b7687cc541265f894567174a4c0ee65ea03d6/Modules/Compiler/Clang.cmake#L78-82
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND CMAKE_INTERPROCEDURAL_OPTIMIZATION
AND NOT TEST_SUITE_THIN_LTO)
list(APPEND CFLAGS -flto=auto)
list(APPEND CXXFLAGS -flto=auto)
list(APPEND LDFLAGS -flto=auto)
endif()

# Detect and include subdirectories
# This allows to: Place additional test-suites into the toplevel test-suite
# directory where they will be picked up automatically. Alternatively you may
Expand Down
3 changes: 2 additions & 1 deletion cmake/caches/OfastLTO.cmake
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
set(OPTFLAGS "${OPTFLAGS} -Ofast -flto")
set(OPTFLAGS "${OPTFLAGS} -Ofast")
set(CMAKE_C_FLAGS_RELEASE "${OPTFLAGS}" CACHE STRING "")
set(CMAKE_CXX_FLAGS_RELEASE "${OPTFLAGS}" CACHE STRING "")
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "")
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ON CACHE BOOL "")
3 changes: 2 additions & 1 deletion cmake/caches/OsLTO.cmake
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
set(OPTFLAGS "${OPTFLAGS} -Os -flto")
set(OPTFLAGS "${OPTFLAGS} -Os")

set(CMAKE_C_FLAGS_RELEASE "${OPTFLAGS}" CACHE STRING "")
set(CMAKE_CXX_FLAGS_RELEASE "${OPTFLAGS}" CACHE STRING "")
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "")
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ON CACHE BOOL "")
3 changes: 2 additions & 1 deletion cmake/caches/ReleaseLTO.cmake
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
# Aggressive settings to produce fast code.
set(OPTFLAGS "${OPTFLAGS} -O3 -fomit-frame-pointer -flto -DNDEBUG")
set(OPTFLAGS "${OPTFLAGS} -O3 -fomit-frame-pointer -DNDEBUG")
if(APPLE)
set(OPTFLAGS "${OPTFLAGS} -mdynamic-no-pic")
endif()

set(CMAKE_C_FLAGS_RELEASE "${OPTFLAGS}" CACHE STRING "")
set(CMAKE_CXX_FLAGS_RELEASE "${OPTFLAGS}" CACHE STRING "")
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "")
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ON CACHE BOOL "")
4 changes: 3 additions & 1 deletion cmake/caches/ReleaseThinLTO.cmake
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
set(OPTFLAGS "${OPTFLAGS} -O3 -fomit-frame-pointer -flto=thin -DNDEBUG")
set(OPTFLAGS "${OPTFLAGS} -O3 -fomit-frame-pointer -DNDEBUG")
if(APPLE)
set(OPTFLAGS "${OPTFLAGS} -mdynamic-no-pic")
endif()

set(CMAKE_C_FLAGS_RELEASE "${OPTFLAGS}" CACHE STRING "")
set(CMAKE_CXX_FLAGS_RELEASE "${OPTFLAGS}" CACHE STRING "")
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "")
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ON CACHE BOOL "")
set(TEST_SUITE_THIN_LTO ON CACHE BOOL "")