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,12 @@ # 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() # ManagedStatic.cpp uses . target_link_libraries(SupportTests PRIVATE LLVMTestingSupport ${LLVM_PTHREAD_LIB}) Index: utils/unittest/googlemock/include/gmock/gmock-matchers.h =================================================================== --- utils/unittest/googlemock/include/gmock/gmock-matchers.h +++ utils/unittest/googlemock/include/gmock/gmock-matchers.h @@ -142,6 +142,11 @@ template class MatcherInterface : public MatcherDescriberInterface { public: + // Define virtual destructor to avoid the following MSVC warning: + // warning C5046: 'testing::MatcherInterface::~MatcherInterface': + // Symbol involving type with internal linkage not defined + virtual ~MatcherInterface() {} + // Returns true iff the matcher matches x; also explains the match // result to 'listener' if necessary (see the next paragraph), in // the form of a non-restrictive relative clause ("which ...",