================
@@ -0,0 +1,140 @@
+include(LLVMExternalProjectUtils)
+
+set(FLANG_PGO_TRAINING_DATA "${CMAKE_CURRENT_SOURCE_DIR}" CACHE PATH
+ "The path to a lit testsuite containing samples for PGO and order file
generation"
+ )
+set(FLANG_PGO_TRAINING_DATA_SOURCE_DIR OFF CACHE STRING "Path to source
directory containing cmake project with source files to use for generating
flang pgo data")
+set(FLANG_PGO_TRAINING_DATA_SOURCE_CMAKE_ARGS "" CACHE STRING "Extra CMake
flags to pass to the cmake project with source files to use for generating
flang pgo data")
+set(FLANG_PGO_TRAINING_DEPS "" CACHE STRING "Extra dependencies needed to
build the PGO training data.")
+set(FLANG_PGO_TRAINING_CLANG_COUPLING ON CACHE BOOL "Train clang and flang
together")
+if(FLANG_PGO_TRAINING_CLANG_COUPLING)
+ set(CLANG_PGO_TRAINING_DATA_SOURCE_DIR OFF CACHE STRING "Path to source
directory containing cmake project with source files to use for generating
clang pgo data")
+ set(CLANG_PGO_TRAINING_DATA_SOURCE_CMAKE_ARGS "" CACHE STRING "Extra CMake
flags to pass to the cmake project with source files to use for generating
clang pgo data")
+endif()
+
+set(CLANG_CURRENT_BINARY_DIR
${CMAKE_CURRENT_BINARY_DIR}/../../../clang/utils/perf-training)
+
+set(PERF_HELPER
${LLVM_MAIN_SRC_DIR}/../clang/utils/perf-training/perf-helper.py)
+
+add_custom_target(clear-flang-perf-data
+ COMMAND "${Python3_EXECUTABLE}" ${PERF_HELPER} clean
${CMAKE_CURRENT_BINARY_DIR} perf.data
+ COMMENT "Clearing old flang perf data")
+
+option(FLANG_PGO_TRAINING_USE_LLVM_BUILD "Use LLVM build for generating PGO
data" ON)
+
+llvm_canonicalize_cmake_booleans(
+ FLANG_PGO_TRAINING_USE_LLVM_BUILD
+)
+
+if(LLVM_BUILD_INSTRUMENTED)
+ configure_lit_site_cfg(
+ ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.in
+ ${CMAKE_CURRENT_BINARY_DIR}/pgo-data/lit.site.cfg
+ )
+
+ add_lit_testsuite(generate-flang-profraw "Generating flang PGO data"
+ ${CMAKE_CURRENT_BINARY_DIR}/pgo-data/
+ EXCLUDE_FROM_CHECK_ALL
+ DEPENDS flang flang-rt
+ )
+ if(FLANG_PGO_TRAINING_CLANG_COUPLING)
+ add_lit_testsuite(generate-clang-profraw "Generating clang PGO data"
+ ${CLANG_CURRENT_BINARY_DIR}/pgo-data/
+ EXCLUDE_FROM_CHECK_ALL
+ DEPENDS clang
+ )
+ endif()
+
+ add_custom_target(clear-flang-profraw
+ COMMAND "${Python3_EXECUTABLE}" ${PERF_HELPER} clean
${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_BINARY_DIR}/profiles/ profraw
+ COMMENT "Clearing old flang profraw data")
+ if (FLANG_PGO_TRAINING_CLANG_COUPLING)
+ add_dependencies(clear-flang-profraw clear-profraw)
+ endif()
+
+ if(NOT LLVM_PROFDATA)
+ find_program(LLVM_PROFDATA llvm-profdata)
+ endif()
+
+ if(NOT LLVM_PROFDATA)
+ message(STATUS "To enable merging PGO data LLVM_PROFDATA has to point to
llvm-profdata")
+ else()
+ set(PROFDATA ${CMAKE_BINARY_DIR}/flang.profdata)
+ set(PROFRAW_TARGETS "")
+ set(PROFRAW_DIRS "")
+ set(PROFRAW_DEPS "")
+ if(FLANG_PGO_TRAINING_CLANG_COUPLING)
+ list(APPEND PROFRAW_TARGETS generate-clang-profraw)
+ list(APPEND PROFRAW_DIRS ${CLANG_CURRENT_BINARY_DIR})
+ list(APPEND PROFRAW_DEPS clang)
+ if (CLANG_PGO_TRAINING_DATA_SOURCE_DIR)
+ llvm_ExternalProject_Add(generate-clang-profraw-external
+ ${CLANG_PGO_TRAINING_DATA_SOURCE_DIR}
+ USE_TOOLCHAIN
+ EXLUDE_FROM_ALL
----------------
pawosm-arm wrote:
Fixed
https://github.com/llvm/llvm-project/pull/197947
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits