diff options
| author | Russell Gallop <russell.gallop@gmail.com> | 2019-09-18 09:43:13 +0000 |
|---|---|---|
| committer | Russell Gallop <russell.gallop@gmail.com> | 2019-09-18 09:43:13 +0000 |
| commit | a84b200e6048211ae74c511a1660fb2c2c5567da (patch) | |
| tree | b769c0045675202ab18f5098406a2c63b2f39427 /llvm/cmake/modules/HandleLLVMOptions.cmake | |
| parent | 178611711122554be1e1a652cc151776cf1caca9 (diff) | |
| download | bcm5719-llvm-a84b200e6048211ae74c511a1660fb2c2c5567da.tar.gz bcm5719-llvm-a84b200e6048211ae74c511a1660fb2c2c5567da.zip | |
[cmake] Changes to get Windows self-host working with PGO
Fixes quoting of profile arguments to work on Windows
Suppresses adding profile arguments to linker flags when using lld-link
Avoids -fprofile-instr-use being added to rc.exe flags
Removes duplicated adding of -fprofile-instr-use to linker flags (since
r355541)
Move handling LLVM_PROFDATA_FILE to HandleLLVMOptions.cmake
Differential Revision: https://reviews.llvm.org/D62063
llvm-svn: 372209
Diffstat (limited to 'llvm/cmake/modules/HandleLLVMOptions.cmake')
| -rw-r--r-- | llvm/cmake/modules/HandleLLVMOptions.cmake | 50 |
1 files changed, 33 insertions, 17 deletions
diff --git a/llvm/cmake/modules/HandleLLVMOptions.cmake b/llvm/cmake/modules/HandleLLVMOptions.cmake index 120438e5fac..5e57a3b8234 100644 --- a/llvm/cmake/modules/HandleLLVMOptions.cmake +++ b/llvm/cmake/modules/HandleLLVMOptions.cmake @@ -821,32 +821,48 @@ string(TOUPPER "${LLVM_BUILD_INSTRUMENTED}" uppercase_LLVM_BUILD_INSTRUMENTED) if (LLVM_BUILD_INSTRUMENTED) if (LLVM_ENABLE_IR_PGO OR uppercase_LLVM_BUILD_INSTRUMENTED STREQUAL "IR") - append("-fprofile-generate='${LLVM_PROFILE_DATA_DIR}'" + append("-fprofile-generate=\"${LLVM_PROFILE_DATA_DIR}\"" CMAKE_CXX_FLAGS - CMAKE_C_FLAGS - CMAKE_EXE_LINKER_FLAGS - CMAKE_SHARED_LINKER_FLAGS) + CMAKE_C_FLAGS) + if(NOT LINKER_IS_LLD_LINK) + append("-fprofile-generate=\"${LLVM_PROFILE_DATA_DIR}\"" + CMAKE_EXE_LINKER_FLAGS + CMAKE_SHARED_LINKER_FLAGS) + endif() elseif(uppercase_LLVM_BUILD_INSTRUMENTED STREQUAL "CSIR") - append("-fcs-profile-generate='${LLVM_CSPROFILE_DATA_DIR}'" + append("-fcs-profile-generate=\"${LLVM_CSPROFILE_DATA_DIR}\"" CMAKE_CXX_FLAGS - CMAKE_C_FLAGS - CMAKE_EXE_LINKER_FLAGS - CMAKE_SHARED_LINKER_FLAGS) + CMAKE_C_FLAGS) + if(NOT LINKER_IS_LLD_LINK) + append("-fcs-profile-generate=\"${LLVM_CSPROFILE_DATA_DIR}\"" + CMAKE_EXE_LINKER_FLAGS + CMAKE_SHARED_LINKER_FLAGS) + endif() else() - append("-fprofile-instr-generate='${LLVM_PROFILE_FILE_PATTERN}'" + append("-fprofile-instr-generate=\"${LLVM_PROFILE_FILE_PATTERN}\"" CMAKE_CXX_FLAGS - CMAKE_C_FLAGS - CMAKE_EXE_LINKER_FLAGS - CMAKE_SHARED_LINKER_FLAGS) + CMAKE_C_FLAGS) + if(NOT LINKER_IS_LLD_LINK) + append("-fprofile-instr-generate=\"${LLVM_PROFILE_FILE_PATTERN}\"" + CMAKE_EXE_LINKER_FLAGS + CMAKE_SHARED_LINKER_FLAGS) + endif() endif() endif() -# Need to pass -fprofile-instr-use to linker for context-sensitive PGO -# compilation. if(LLVM_PROFDATA_FILE AND EXISTS ${LLVM_PROFDATA_FILE}) - append("-fprofile-instr-use='${LLVM_PROFDATA_FILE}'" - CMAKE_EXE_LINKER_FLAGS - CMAKE_SHARED_LINKER_FLAGS) + if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" ) + append("-fprofile-instr-use=\"${LLVM_PROFDATA_FILE}\"" + CMAKE_CXX_FLAGS + CMAKE_C_FLAGS) + if(NOT LINKER_IS_LLD_LINK) + append("-fprofile-instr-use=\"${LLVM_PROFDATA_FILE}\"" + CMAKE_EXE_LINKER_FLAGS + CMAKE_SHARED_LINKER_FLAGS) + endif() + else() + message(FATAL_ERROR "LLVM_PROFDATA_FILE can only be specified when compiling with clang") + endif() endif() option(LLVM_BUILD_INSTRUMENTED_COVERAGE "Build LLVM and tools with Code Coverage instrumentation" Off) |

