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)} + +