Author: Amir Ayupov Date: 2023-01-28T11:54:09-08:00 New Revision: e67f849001bb890f86831ab31c1bb25e0882e711
URL: https://github.com/llvm/llvm-project/commit/e67f849001bb890f86831ab31c1bb25e0882e711 DIFF: https://github.com/llvm/llvm-project/commit/e67f849001bb890f86831ab31c1bb25e0882e711.diff LOG: [CMake] Replace clang binary if using clang-bolt target Instead of creating an extra clang-bolt binary and clang++-bolt symlink, replace the original clang binary with BOLT-optimized one. This fixes the issue with installing optimized binary as `install-clang` target now copies the new version. Reviewed By: phosek Differential Revision: https://reviews.llvm.org/D139454 Added: Modified: clang/CMakeLists.txt clang/cmake/caches/BOLT-PGO.cmake llvm/docs/AdvancedBuilds.rst Removed: ################################################################################ diff --git a/clang/CMakeLists.txt b/clang/CMakeLists.txt index 090cfa3520789..b2cd30b9c7884 100644 --- a/clang/CMakeLists.txt +++ b/clang/CMakeLists.txt @@ -856,8 +856,6 @@ if (CLANG_BOLT_INSTRUMENT AND NOT LLVM_BUILD_INSTRUMENTED) set(CLANGXX_PATH ${CLANG_PATH}++) set(CLANG_INSTRUMENTED ${CLANG_PATH}-bolt.inst) set(CLANGXX_INSTRUMENTED ${CLANGXX_PATH}-bolt.inst) - set(CLANG_OPTIMIZED ${CLANG_PATH}-bolt) - set(CLANGXX_OPTIMIZED ${CLANGXX_PATH}-bolt) # Instrument clang with BOLT add_custom_target(clang-instrumented @@ -935,6 +933,7 @@ if (CLANG_BOLT_INSTRUMENT AND NOT LLVM_BUILD_INSTRUMENTED) ) # Optimize original (pre-bolt) Clang using the collected profile + set(CLANG_OPTIMIZED ${CMAKE_CURRENT_BINARY_DIR}/clang.bolt) add_custom_target(clang-bolt DEPENDS ${CLANG_OPTIMIZED} ) @@ -945,22 +944,10 @@ if (CLANG_BOLT_INSTRUMENT AND NOT LLVM_BUILD_INSTRUMENTED) -data ${CMAKE_CURRENT_BINARY_DIR}/prof.fdata -reorder-blocks=ext-tsp -reorder-functions=hfsort+ -split-functions -split-all-cold -split-eh -dyno-stats -icf=1 -use-gnu-stack + COMMAND ${CMAKE_COMMAND} -E rename ${CLANG_OPTIMIZED} $<TARGET_FILE:clang> COMMENT "Optimizing Clang with BOLT" VERBATIM ) - - # Make a symlink from clang-bolt to clang++-bolt - add_custom_target(clang++-bolt - DEPENDS ${CLANGXX_OPTIMIZED} - ) - add_custom_command(OUTPUT ${CLANGXX_OPTIMIZED} - DEPENDS clang-bolt - COMMAND ${CMAKE_COMMAND} -E create_symlink - ${CLANG_OPTIMIZED} - ${CLANGXX_OPTIMIZED} - COMMENT "Creating symlink from BOLT optimized clang to clang++" - VERBATIM - ) endif() if (LLVM_ADD_NATIVE_VISUALIZERS_TO_SOLUTION) diff --git a/clang/cmake/caches/BOLT-PGO.cmake b/clang/cmake/caches/BOLT-PGO.cmake index c329415465c94..616e632d1531b 100644 --- a/clang/cmake/caches/BOLT-PGO.cmake +++ b/clang/cmake/caches/BOLT-PGO.cmake @@ -2,11 +2,9 @@ set(LLVM_ENABLE_PROJECTS "bolt;clang;lld" CACHE STRING "") set(CLANG_BOOTSTRAP_TARGETS stage2-clang-bolt - stage2-clang++-bolt CACHE STRING "") set(BOOTSTRAP_CLANG_BOOTSTRAP_TARGETS clang-bolt - clang++-bolt CACHE STRING "") set(PGO_BUILD_CONFIGURATION ${CMAKE_CURRENT_LIST_DIR}/BOLT.cmake CACHE STRING "") diff --git a/llvm/docs/AdvancedBuilds.rst b/llvm/docs/AdvancedBuilds.rst index b3e9f85d7fe95..ba3f3c3e498f4 100644 --- a/llvm/docs/AdvancedBuilds.rst +++ b/llvm/docs/AdvancedBuilds.rst @@ -224,7 +224,7 @@ Then, build the BOLT-optimized binary by running the following ninja command: .. code-block:: console - $ ninja clang++-bolt + $ ninja clang-bolt If you're seeing errors in the build process, try building with a recent version of Clang/LLVM by setting the CMAKE_C_COMPILER and @@ -243,12 +243,11 @@ configuration command: -DBOOTSTRAP_BOOTSTRAP_LLVM_ENABLE_LLD=ON \ -DPGO_INSTRUMENT_LTO=Thin -Then, to build the final optimized binary, build the stage2-clang++-bolt -target: +Then, to build the final optimized binary, build the stage2-clang-bolt target: .. code-block:: console - $ ninja stage2-clang++-bolt + $ ninja stage2-clang-bolt 3-Stage Non-Determinism ======================= _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits