summaryrefslogtreecommitdiffstats
path: root/llvm/cmake/modules/HandleLLVMOptions.cmake
diff options
context:
space:
mode:
authorRussell Gallop <russell.gallop@gmail.com>2019-09-18 09:43:13 +0000
committerRussell Gallop <russell.gallop@gmail.com>2019-09-18 09:43:13 +0000
commita84b200e6048211ae74c511a1660fb2c2c5567da (patch)
treeb769c0045675202ab18f5098406a2c63b2f39427 /llvm/cmake/modules/HandleLLVMOptions.cmake
parent178611711122554be1e1a652cc151776cf1caca9 (diff)
downloadbcm5719-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.cmake50
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)
OpenPOWER on IntegriCloud