Update prebuilt Clang to r416183b from Android.
https://android.googlesource.com/platform/prebuilts/clang/host/
linux-x86/+/06a71ddac05c22edb2d10b590e1769b3f8619bef
clang 12.0.5 (based on r416183b) from build 7284624.
Change-Id: I277a316abcf47307562d8b748b84870f31a72866
Signed-off-by: Olivier Deprez <olivier.deprez@arm.com>
diff --git a/linux-x64/clang/lib64/cmake/llvm/TableGen.cmake b/linux-x64/clang/lib64/cmake/llvm/TableGen.cmake
index f15a23b..5f07acc 100644
--- a/linux-x64/clang/lib64/cmake/llvm/TableGen.cmake
+++ b/linux-x64/clang/lib64/cmake/llvm/TableGen.cmake
@@ -2,19 +2,14 @@
# Extra parameters for `tblgen' may come after `ofn' parameter.
# Adds the name of the generated file to TABLEGEN_OUTPUT.
-if(LLVM_MAIN_INCLUDE_DIR)
- set(LLVM_TABLEGEN_FLAGS -I ${LLVM_MAIN_INCLUDE_DIR})
-endif()
-
function(tablegen project ofn)
# Validate calling context.
if(NOT ${project}_TABLEGEN_EXE)
message(FATAL_ERROR "${project}_TABLEGEN_EXE not set")
endif()
- # Use depfile instead of globbing arbitrary *.td(s)
- # DEPFILE is available for Ninja Generator with CMake>=3.7.
- if(CMAKE_GENERATOR STREQUAL "Ninja" AND NOT CMAKE_VERSION VERSION_LESS 3.7)
+ # Use depfile instead of globbing arbitrary *.td(s) for Ninja.
+ if(CMAKE_GENERATOR STREQUAL "Ninja")
# Make output path relative to build.ninja, assuming located on
# ${CMAKE_BINARY_DIR}.
# CMake emits build targets as relative paths but Ninja doesn't identify
@@ -57,6 +52,32 @@
list(APPEND LLVM_TABLEGEN_FLAGS "-gisel-coverage-file=${LLVM_GISEL_COV_PREFIX}all")
endif()
endif()
+ # Comments are only useful for Debug builds. Omit them if the backend
+ # supports it.
+ if (NOT (uppercase_CMAKE_BUILD_TYPE STREQUAL "DEBUG" OR
+ uppercase_CMAKE_BUILD_TYPE STREQUAL "RELWITHDEBINFO"))
+ list(FIND ARGN "-gen-dag-isel" idx)
+ if (NOT idx EQUAL -1)
+ list(APPEND LLVM_TABLEGEN_FLAGS "-omit-comments")
+ endif()
+ endif()
+
+ # MSVC can't support long string literals ("long" > 65534 bytes)[1], so if there's
+ # a possibility of generated tables being consumed by MSVC, generate arrays of
+ # char literals, instead. If we're cross-compiling, then conservatively assume
+ # that the source might be consumed by MSVC.
+ # [1] https://docs.microsoft.com/en-us/cpp/cpp/compiler-limits?view=vs-2017
+ if (MSVC AND project STREQUAL LLVM)
+ list(APPEND LLVM_TABLEGEN_FLAGS "--long-string-literals=0")
+ endif()
+ if (CMAKE_GENERATOR MATCHES "Visual Studio")
+ # Visual Studio has problems with llvm-tblgen's native --write-if-changed
+ # behavior. Since it doesn't do restat optimizations anyway, just don't
+ # pass --write-if-changed there.
+ set(tblgen_change_flag)
+ else()
+ set(tblgen_change_flag "--write-if-changed")
+ endif()
# We need both _TABLEGEN_TARGET and _TABLEGEN_EXE in the DEPENDS list
# (both the target and the file) to have .inc files rebuilt on
@@ -67,10 +88,15 @@
# dependency twice in the result file when
# ("${${project}_TABLEGEN_TARGET}" STREQUAL "${${project}_TABLEGEN_EXE}")
# but lets us having smaller and cleaner code here.
+ get_directory_property(tblgen_includes INCLUDE_DIRECTORIES)
+ list(TRANSFORM tblgen_includes PREPEND -I)
+
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${ofn}
COMMAND ${${project}_TABLEGEN_EXE} ${ARGN} -I ${CMAKE_CURRENT_SOURCE_DIR}
+ ${tblgen_includes}
${LLVM_TABLEGEN_FLAGS}
${LLVM_TARGET_DEFINITIONS_ABSOLUTE}
+ ${tblgen_change_flag}
${additional_cmdline}
# The file in LLVM_TARGET_DEFINITIONS may be not in the current
# directory and local_tds may not contain it, so we must
@@ -107,8 +133,8 @@
set(${target}_OLD_LLVM_LINK_COMPONENTS ${LLVM_LINK_COMPONENTS})
set(LLVM_LINK_COMPONENTS ${LLVM_LINK_COMPONENTS} TableGen)
- # CMake-3.9 doesn't let compilation units depend on their dependent libraries.
- if(NOT (CMAKE_GENERATOR STREQUAL "Ninja" AND NOT CMAKE_VERSION VERSION_LESS 3.9) AND NOT XCODE)
+ # CMake doesn't let compilation units depend on their dependent libraries on some generators.
+ if(NOT CMAKE_GENERATOR STREQUAL "Ninja" AND NOT XCODE)
# FIXME: It leaks to user, callee of add_tablegen.
set(LLVM_ENABLE_OBJLIB ON)
endif()
@@ -125,7 +151,10 @@
if(LLVM_USE_HOST_TOOLS)
if( ${${project}_TABLEGEN} STREQUAL "${target}" )
- build_native_tool(${target} ${project}_TABLEGEN_EXE)
+ # The NATIVE tablegen executable *must* depend on the current target one
+ # otherwise the native one won't get rebuilt when the tablgen sources
+ # change, and we end up with incorrect builds.
+ build_native_tool(${target} ${project}_TABLEGEN_EXE DEPENDS ${target})
set(${project}_TABLEGEN_EXE ${${project}_TABLEGEN_EXE} PARENT_SCOPE)
add_custom_target(${project}-tablegen-host DEPENDS ${${project}_TABLEGEN_EXE})
@@ -147,7 +176,7 @@
endif()
endif()
- if (${project} STREQUAL LLVM AND NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
+ if ((${project} STREQUAL LLVM OR ${project} STREQUAL MLIR) AND NOT LLVM_INSTALL_TOOLCHAIN_ONLY AND LLVM_BUILD_UTILS)
set(export_to_llvmexports)
if(${target} IN_LIST LLVM_DISTRIBUTION_COMPONENTS OR
NOT LLVM_DISTRIBUTION_COMPONENTS)
@@ -156,7 +185,13 @@
install(TARGETS ${target}
${export_to_llvmexports}
+ COMPONENT ${target}
RUNTIME DESTINATION ${LLVM_TOOLS_INSTALL_DIR})
+ if(NOT LLVM_ENABLE_IDE)
+ add_llvm_install_targets("install-${target}"
+ DEPENDS ${target}
+ COMPONENT ${target})
+ endif()
endif()
set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS ${target})
endmacro()