From fb58be862cb6b29f6088b6c16757f71ca009dd3f Mon Sep 17 00:00:00 2001 From: Reid Kleckner Date: Wed, 12 Oct 2016 21:51:14 +0000 Subject: [PATCH] Update _MSC_VER equality checks for msdiaNNN.dll Use inequality instead of equality to defend against minor version increases in _MSC_VER. An _MSC_VER value of 1901 should still use msdia140.dll, as described in this blog post: https://blogs.msdn.microsoft.com/vcblog/2016/10/05/visual-c-compiler-version/ llvm-svn: 284058 --- llvm/lib/DebugInfo/PDB/DIA/DIASession.cpp | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/llvm/lib/DebugInfo/PDB/DIA/DIASession.cpp b/llvm/lib/DebugInfo/PDB/DIA/DIASession.cpp index fa224af..861b7bb 100644 --- a/llvm/lib/DebugInfo/PDB/DIA/DIASession.cpp +++ b/llvm/lib/DebugInfo/PDB/DIA/DIASession.cpp @@ -24,9 +24,7 @@ using namespace llvm; using namespace llvm::pdb; -namespace { - -Error ErrorFromHResult(HRESULT Result) { +static Error ErrorFromHResult(HRESULT Result) { switch (Result) { case E_PDB_NOT_FOUND: return make_error(generic_error_code::invalid_path); @@ -44,7 +42,7 @@ Error ErrorFromHResult(HRESULT Result) { } } -Error LoadDIA(CComPtr &DiaDataSource) { +static Error LoadDIA(CComPtr &DiaDataSource) { if (SUCCEEDED(CoCreateInstance(CLSID_DiaSource, nullptr, CLSCTX_INPROC_SERVER, IID_IDiaDataSource, reinterpret_cast(&DiaDataSource)))) @@ -55,12 +53,11 @@ Error LoadDIA(CComPtr &DiaDataSource) { #if !defined(_MSC_VER) return llvm::make_error( "DIA is only supported when using MSVC."); -#endif - +#else const wchar_t *msdia_dll = nullptr; -#if _MSC_VER == 1900 +#if _MSC_VER >= 1900 && _MSC_VER < 2000 msdia_dll = L"msdia140.dll"; // VS2015 -#elif _MSC_VER == 1800 +#elif _MSC_VER >= 1800 msdia_dll = L"msdia120.dll"; // VS2013 #else #error "Unknown Visual Studio version." @@ -71,8 +68,7 @@ Error LoadDIA(CComPtr &DiaDataSource) { reinterpret_cast(&DiaDataSource)))) return ErrorFromHResult(HR); return Error::success(); -} - +#endif } DIASession::DIASession(CComPtr DiaSession) : Session(DiaSession) {} -- 2.7.4