Index: clang/CMakeLists.txt
===================================================================
--- clang/CMakeLists.txt
+++ clang/CMakeLists.txt
@@ -342,6 +342,19 @@
endif()
endif ()
+message("LINKER_IS_LLD_LINK = ${LINKER_IS_LLD_LINK}")
+message("LINKER_IS_MSVC_LINK = ${LINKER_IS_MSVC_LINK}")
+if (LINKER_IS_LLD_LINK OR LINKER_IS_MSVC_LINK)
+ set(CMAKE_EXE_LINKER_FLAGS
+ "${CMAKE_EXE_LINKER_FLAGS} /natvis:${CMAKE_CURRENT_SOURCE_DIR}/utils/ClangVisualizers/clang.natvis")
+ set(CMAKE_SHARED_LINKER_FLAGS
+ "${CMAKE_SHARED_LINKER_FLAGS} /natvis:${CMAKE_CURRENT_SOURCE_DIR}/utils/ClangVisualizers/clang.natvis")
+endif()
+message("CMAKE_EXE_LINKER_FLAGS = ${CMAKE_EXE_LINKER_FLAGS}")
+message("CMAKE_SHARED_LINKER_FLAGS = ${CMAKE_SHARED_LINKER_FLAGS}")
+
+
+
# Determine HOST_LINK_VERSION on Darwin.
set(HOST_LINK_VERSION)
if (APPLE)
@@ -750,9 +763,6 @@
endforeach()
endif()
-if (LLVM_ADD_NATIVE_VISUALIZERS_TO_SOLUTION)
- add_subdirectory(utils/ClangVisualizers)
-endif()
add_subdirectory(utils/hmaptool)
configure_file(
Index: llvm/CMakeLists.txt
===================================================================
--- llvm/CMakeLists.txt
+++ llvm/CMakeLists.txt
@@ -555,12 +555,6 @@
set(LLVM_USE_HOST_TOOLS ON)
endif()
-if (MSVC_IDE AND NOT (MSVC_VERSION LESS 1900))
- option(LLVM_ADD_NATIVE_VISUALIZERS_TO_SOLUTION "Configure project to use Visual Studio native visualizers" TRUE)
-else()
- set(LLVM_ADD_NATIVE_VISUALIZERS_TO_SOLUTION FALSE CACHE INTERNAL "For Visual Studio 2013, manually copy natvis files to Documents\\Visual Studio 2013\\Visualizers" FORCE)
-endif()
-
if (LLVM_BUILD_INSTRUMENTED OR LLVM_BUILD_INSTRUMENTED_COVERAGE OR
LLVM_ENABLE_IR_PGO)
if(NOT LLVM_PROFILE_MERGE_POOL_SIZE)
@@ -868,9 +862,11 @@
endif()
endif()
-# Use LLVM_ADD_NATIVE_VISUALIZERS_TO_SOLUTION instead of LLVM_INCLUDE_UTILS because it is not really a util
-if (LLVM_ADD_NATIVE_VISUALIZERS_TO_SOLUTION)
- add_subdirectory(utils/LLVMVisualizers)
+if (LINKER_IS_LLD_LINK OR LINKER_IS_MSVC_LINK)
+ set(CMAKE_EXE_LINKER_FLAGS
+ "${CMAKE_EXE_LINKER_FLAGS} /natvis:${CMAKE_CURRENT_SOURCE_DIR}/utils/LLVMVisualizers/llvm.natvis")
+ set(CMAKE_SHARED_LINKER_FLAGS
+ "${CMAKE_SHARED_LINKER_FLAGS} /natvis:${CMAKE_CURRENT_SOURCE_DIR}/utils/LLVMVisualizers/llvm.natvis")
endif()
foreach( binding ${LLVM_BINDINGS_LIST} )
Index: llvm/cmake/modules/HandleLLVMOptions.cmake
===================================================================
--- llvm/cmake/modules/HandleLLVMOptions.cmake
+++ llvm/cmake/modules/HandleLLVMOptions.cmake
@@ -11,9 +11,19 @@
include(CheckCCompilerFlag)
include(CheckCXXCompilerFlag)
-if(CMAKE_LINKER MATCHES "lld-link.exe" OR (WIN32 AND LLVM_USE_LINKER STREQUAL "lld"))
- set(LINKER_IS_LLD_LINK TRUE)
+if (WIN32)
+ if(CMAKE_LINKER MATCHES "lld-link.exe" OR (LLVM_USE_LINKER STREQUAL "lld"))
+ set(LINKER_IS_MSVC_LINK FALSE)
+ set(LINKER_IS_LLD_LINK TRUE)
+ elseif(CMAKE_LINKER MATCHES "link.exe")
+ set(LINKER_IS_MSVC_LINK TRUE)
+ set(LINKER_IS_LLD_LINK FALSE)
+ else()
+ set(LINKER_IS_MSVC_LINK FALSE)
+ set(LINKER_IS_LLD_LINK FALSE)
+ endif()
else()
+ set(LINKER_IS_MSVC_LINK FALSE)
set(LINKER_IS_LLD_LINK FALSE)
endif()
Index: llvm/utils/LLVMVisualizers/llvm.natvis
===================================================================
--- llvm/utils/LLVMVisualizers/llvm.natvis
+++ llvm/utils/LLVMVisualizers/llvm.natvis
@@ -195,13 +195,18 @@
- empty
- {*(($T1 *)(unsigned char *)storage.buffer)}
+ None
+ {*(($T1 *)(unsigned char *)Storage.storage.buffer)}
- - *(($T1 *)(unsigned char *)storage.buffer)
+ - *(($T1 *)(unsigned char *)Storage.storage.buffer)
+
+ Error
+ {*((storage_type *)TStorage.buffer)}
+
+