Index: examples/Kaleidoscope/Chapter2/CMakeLists.txt =================================================================== --- examples/Kaleidoscope/Chapter2/CMakeLists.txt +++ examples/Kaleidoscope/Chapter2/CMakeLists.txt @@ -11,3 +11,8 @@ -Wno-unused-private-field ) endif() + +if(MSVC) + # ignore "warning LNK4199: /DELAYLOAD:shell32.dll ignored; no imports found from shell32.dll" + target_link_libraries(Kaleidoscope-Ch2 PRIVATE "-ignore:4199") +endif() Index: unittests/Support/CMakeLists.txt =================================================================== --- unittests/Support/CMakeLists.txt +++ unittests/Support/CMakeLists.txt @@ -83,7 +83,21 @@ # Disable all warning for AlignOfTest.cpp, # as it does things intentionally, and there is no reliable way of # disabling all warnings for all the compilers by using pragmas. -set_source_files_properties(AlignOfTest.cpp PROPERTIES COMPILE_FLAGS -w) +# Don't disable on MSVC, because all incriminated warnings are already disabled +# in source; and because we would otherwise see this warning: +# cl : Command line warning D9025: overriding '/W4' with '/w' +if(NOT MSVC) + set_source_files_properties(AlignOfTest.cpp PROPERTIES COMPILE_FLAGS -w) +endif() +if(MSVC) + if( CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.15 ) + # Since VS2017 15.8, the following snippet: Failed() + # generates a warning: + # \svn\llvm\utils\unittest\googlemock\include\gmock\gmock-matchers.h(186): + # warning C5046: 'testing::MatcherInterface::~MatcherInterface': Symbol involving type with internal linkage not defined + set_source_files_properties(ErrorTest.cpp PROPERTIES COMPILE_FLAGS -wd5046) + endif() +endif() # ManagedStatic.cpp uses . target_link_libraries(SupportTests PRIVATE LLVMTestingSupport ${LLVM_PTHREAD_LIB})