[CMake] Disable BOLT instrumentation of Clang on instrumented build
This enables multi-stage PGO build optimized by BOLT using BOLT.cmake cache. The issue is that `-DPGO_BUILD_CONFIGURATION` cache file is passed to both stage2-instrumented and stage2-optimized builds (for them to be identical), but in case of BOLT.cmake, it doesn't make sense to BOLT-instrument the instrumented binary (it's not going to be optimized). Hence turn off `CLANG_BOLT_INSTRUMENT` code if `LLVM_BUILD_INSTRUMENTED` is enabled. The final workflow that enables multi-stage InstrPGO+ThinLTO+BOLT Clang build: ``` cmake <llvm-project>/llvm -GNinja -DLLVM_ENABLE_LLD=ON \ -DBOOTSTRAP_LLVM_ENABLE_LLD=ON -DBOOTSTRAP_BOOTSTRAP_LLVM_ENABLE_LLD=ON \ -DPGO_INSTRUMENT_LTO=Thin -C llvm-project/clang/cmake/caches/BOLT-PGO.cmake ninja stage2-clang++-bolt ``` Reviewed By: rafauler Differential Revision: https://reviews.llvm.org/D136023
This commit is contained in:
parent
647ca2ee70
commit
076240fa06
|
@ -868,7 +868,7 @@ if (CLANG_ENABLE_BOOTSTRAP)
|
|||
endforeach()
|
||||
endif()
|
||||
|
||||
if (CLANG_BOLT_INSTRUMENT)
|
||||
if (CLANG_BOLT_INSTRUMENT AND NOT LLVM_BUILD_INSTRUMENTED)
|
||||
set(CLANG_PATH ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang)
|
||||
set(CLANGXX_PATH ${CLANG_PATH}++)
|
||||
set(CLANG_INSTRUMENTED ${CLANG_PATH}-bolt.inst)
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
set(LLVM_ENABLE_PROJECTS "bolt;clang;lld" CACHE STRING "")
|
||||
|
||||
set(CLANG_BOOTSTRAP_TARGETS
|
||||
stage2-clang++-bolt
|
||||
CACHE STRING "")
|
||||
set(BOOTSTRAP_CLANG_BOOTSTRAP_TARGETS
|
||||
clang++-bolt
|
||||
CACHE STRING "")
|
||||
|
||||
set(PGO_BUILD_CONFIGURATION ${CMAKE_CURRENT_LIST_DIR}/BOLT.cmake CACHE STRING "")
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/PGO.cmake)
|
Loading…
Reference in New Issue