diff --git a/llvm/cmake/modules/AddLLVM.cmake b/llvm/cmake/modules/AddLLVM.cmake --- a/llvm/cmake/modules/AddLLVM.cmake +++ b/llvm/cmake/modules/AddLLVM.cmake @@ -1451,6 +1451,18 @@ list(APPEND LLVM_LINK_COMPONENTS Support) # gtest needs it for raw_ostream add_llvm_executable(${test_name} IGNORE_EXTERNALIZE_DEBUGINFO NO_INSTALL_RPATH ${ARGN}) + + # The runtime benefits of ThinLTO don't outweight the compile time costs for tests. + if(uppercase_LLVM_ENABLE_LTO STREQUAL "THIN") + if((UNIX OR MINGW) AND LLVM_USE_LINKER STREQUAL "lld") + set_property(TARGET ${test_name} APPEND_STRING PROPERTY + LINK_FLAGS " -Wl,--lto-O0") + elseif(LINKER_IS_LLD_LINK) + set_property(TARGET ${test_name} APPEND_STRING PROPERTY + LINK_FLAGS " /opt:lldlto=0") + endif() + endif() + set(outdir ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}) set_output_directory(${test_name} BINARY_DIR ${outdir} LIBRARY_DIR ${outdir}) # libpthreads overrides some standard library symbols, so main