[cfe-dev] Using Clang 5.0.0 RC2 with MSVC dev builds

don hinton via cfe-dev cfe-dev at lists.llvm.org
Mon Aug 14 20:17:41 PDT 2017


I think this change might be causing the problem you are seeing:
https://reviews.llvm.org/D30758






On Mon, Aug 14, 2017 at 6:17 PM, Reid Kleckner via cfe-dev <
cfe-dev at lists.llvm.org> wrote:

> > 2. Is there a simple way for me to get Clang 4.0's behavior back, where
> having cl.exe and link.exe on my PATH makes Clang automatically detect the
> correct -fms-compatibility-version and link.exe to be used?
>
> I haven't figured out what changed, but that definitely seems like a
> regression.
>
> On Mon, Aug 14, 2017 at 6:04 PM, Stephan T. Lavavej via cfe-dev <
> cfe-dev at lists.llvm.org> wrote:
>
>> Hi Clang devs,
>>
>> I'm trying to use Clang/LLVM with MSVC's STL in order to keep our code
>> conformant and Clang-compatible, and I've encountered a problematic
>> behavior change between Clang 4.0 and 5.0.
>>
>> The only Visual Studio installation on my machine is VS 2013. (I work on
>> msvcp140.dll, so my life is easier if I avoid anything that installs it
>> system-wide like VS 2015/2017.)
>>
>> I am NOT using a VS 2013 Developer Command Prompt.
>>
>> I'm starting with a plain command prompt, using a development build of VS
>> 2017 (somewhat beyond 15.3) by adding it to PATH, INCLUDE, and LIB. (I'm
>> NOT running an installer for this development build, nor am I modifying the
>> registry in any way.) The directory structure of our development build is
>> simple, although it does not correspond to the publicly distributed
>> installer. On my machine, I have S:\binaries\x86ret, with
>> S:\binaries\x86ret\bin\i386\cl.exe containing the x86-native compiler,
>> S:\binaries\x86ret\inc\vector containing my favorite header, and
>> S:\binaries\x86ret\lib\i386\libcpmt.lib containing the STL's static lib.
>> (The CRT's headers and libs are in different directories, but Clang isn't
>> having trouble with INCLUDE and LIB.)
>>
>> I've also used 7-Zip to extract Clang/LLVM 4.0.1 x64-hosted to a
>> directory, WITHOUT running an installer.
>>
>> In this scenario, everything works fine, and we've been testing our STL
>> with Clang/LLVM since June (originally 4.0.0, now 4.0.1):
>>
>> C:\Temp>echo %PATH%
>> S:\WCFB01\vctools\nonship\bin\x86;S:\binaries\x86ret\bin\i38
>> 6;S:\WCFB01\vctools\Compiler\Regress\bin\AMD64\xperf;S:\
>> WCFB01\vctools\NonShip\ClangLLVM\bin;C:\Temp\Exec;C:\
>> Temp\git\cmd;C:\windows\system32;C:\windows;C:\
>> windows\System32\Wbem;C:\windows\System32\WindowsPowerShell\v1.0\;C:\Program
>> Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program
>> Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files
>> (x86)\Microsoft SDKs\TypeScript\1.0\;C:\Users\
>> stl\AppData\Local\Microsoft\WindowsApps;;S:\WCFB01\vctools\
>> Compiler\Regress\bin;S:\WCFB01\vctools\Compiler\Regres
>> s\bin\AMD64;;S:\WCFB01\tools\perl\bin
>>
>> C:\Temp>echo %INCLUDE%
>> S:\binaries\x86ret\atlmfc\include;S:\binaries\x86ret\inc;S:\
>> WCFB01\ExternalApis\Windows\10\sdk\inc;S:\WCFB01\ExternalA
>> pis\UnifiedCRT\inc;S:\WCFB01\ExternalAPIs\DirectX\Jun2010\Include;
>>
>> C:\Temp>echo %LIB%
>> S:\binaries\x86ret\atlmfc\lib\i386;S:\binaries\x86ret\lib\i3
>> 86;S:\WCFB01\ExternalApis\Windows\10\sdk\lib\x86;S:\WCFB01\
>> ExternalApis\UnifiedCRT\lib\i386;S:\WCFB01\ExternalApis\
>> NetFX\v4.5\lib\x86;S:\WCFB01\ExternalAPIs\DirectX\Jun2010\Lib\x86;
>>
>> C:\Temp>type meow.cpp
>> #include <iostream>
>> int main() {
>> #ifdef __clang__
>>     std::cout << "I am Clang: " << __clang_version__ << "\n";
>> #elif defined(_MSC_VER)
>>     std::cout << "I am C1XX: " << _MSC_FULL_VER << "\n";
>> #else
>>     std::cout << "I am something else.\n";
>> #endif
>> }
>>
>> C:\Temp>where cl
>> S:\binaries\x86ret\bin\i386\cl.exe
>>
>> C:\Temp>where link
>> S:\binaries\x86ret\bin\i386\link.exe
>>
>> C:\Temp>cl /EHsc /nologo /W4 /MT meow.cpp && meow
>> meow.cpp
>> I am C1XX: 191125614
>>
>> C:\Temp>where clang-cl
>> S:\WCFB01\vctools\NonShip\ClangLLVM\bin\clang-cl.exe
>>
>> C:\Temp>clang-cl -v -m32 /EHsc /nologo /W4 /MT meow.cpp && meow
>> clang version 4.0.1 (tags/RELEASE_401/final)
>> Target: i386-pc-windows-msvc
>> Thread model: posix
>> InstalledDir: S:\WCFB01\vctools\NonShip\ClangLLVM\bin
>>  "S:\\WCFB01\\vctools\\NonShip\\ClangLLVM\\bin\\clang-cl.exe" -cc1
>> -triple i386-pc-windows-msvc19.11.25614 -emit-obj -mrelax-all
>> -mincremental-linker-compatible -disable-free -main-file-name meow.cpp
>> -mrelocation-model static -mthread-model posix -mdisable-fp-elim
>> -relaxed-aliasing -fmath-errno -masm-verbose -mconstructor-aliases
>> -target-cpu pentium4 -D_MT -flto-visibility-public-std
>> --dependent-lib=libcmt --dependent-lib=oldnames -stack-protector 2
>> -fcxx-exceptions -fexceptions -fexternc-nounwind -fms-volatile
>> -fdiagnostics-format msvc -v -dwarf-column-info -debugger-tuning=gdb
>> -resource-dir "S:\\WCFB01\\vctools\\NonShip\
>> \ClangLLVM\\bin\\..\\lib\\clang\\4.0.1" -internal-isystem
>> "S:\\WCFB01\\vctools\\NonShip\\ClangLLVM\\bin\\..\\lib\\clang\\4.0.1\\include"
>> -internal-isystem "S:\\binaries\\x86ret\\atlmfc\\include"
>> -internal-isystem "S:\\binaries\\x86ret\\inc" -internal-isystem
>> "S:\\WCFB01\\ExternalApis\\Windows\\10\\sdk\\inc" -internal-isystem
>> "S:\\WCFB01\\ExternalApis\\UnifiedCRT\\inc" -internal-isystem
>> "S:\\WCFB01\\ExternalAPIs\\DirectX\\Jun2010\\Include" -WCL4
>> -fdeprecated-macro -fdebug-compilation-dir "C:\\Temp" -ferror-limit 19
>> -fmessage-length 120 -fms-extensions -fms-compatibility
>> -fms-compatibility-version=19.11.25614 -std=c++14
>> -fdelayed-template-parsing -fobjc-runtime=gcc -fdiagnostics-show-option
>> -fcolor-diagnostics -o "C:\\Users\\stl\\AppData\\Local\\Temp\\1\\meow-291efe.obj"
>> -x c++ meow.cpp
>> clang -cc1 version 4.0.1 based upon LLVM 4.0.1 default target
>> x86_64-pc-windows-msvc
>> #include "..." search starts here:
>> #include <...> search starts here:
>>  S:\WCFB01\vctools\NonShip\ClangLLVM\bin\..\lib\clang\4.0.1\include
>>  S:\binaries\x86ret\atlmfc\include
>>  S:\binaries\x86ret\inc
>>  S:\WCFB01\ExternalApis\Windows\10\sdk\inc
>>  S:\WCFB01\ExternalApis\UnifiedCRT\inc
>>  S:\WCFB01\ExternalAPIs\DirectX\Jun2010\Include
>> End of search list.
>>  "S:\\binaries\\x86ret\\bin\\i386\\link.exe" -out:meow.exe -nologo
>> "C:\\Users\\stl\\AppData\\Local\\Temp\\1\\meow-291efe.obj"
>> I am Clang: 4.0.1 (tags/RELEASE_401/final)
>>
>> Observe that my C1XX version, 19.11.25614, is detected by Clang which
>> passes -fms-compatibility-version=19.11.25614 and defaults to
>> -std=c++14. The linker from my development build is also used,
>> S:\binaries\x86ret\bin\i386\link.exe.
>>
>> Next, I deleted everything in S:\WCFB01\vctools\NonShip\ClangLLVM\,
>> downloaded http://prereleases.llvm.org/5.0.0/rc2/LLVM-5.0.0-rc2-win64.exe
>> (grinding my teeth at non-secure HTTP), and extracted 5.0.0-rc2 there:
>>
>> S:\WCFB01\vctools\NonShip\ClangLLVM>dir /b
>>
>> S:\WCFB01\vctools\NonShip\ClangLLVM>7z x C:\Temp\LLVM-5.0.0-rc2-win64.exe
>> -x!Uninstall.exe -x!$PLUGINSDIR\*
>>
>> 7-Zip [64] 16.04 : Copyright (c) 1999-2016 Igor Pavlov : 2016-10-04
>>
>> Scanning the drive for archives:
>> 1 file, 131097761 bytes (126 MiB)
>>
>> Extracting archive: C:\Temp\LLVM-5.0.0-rc2-win64.exe
>> --
>> Path = C:\Temp\LLVM-5.0.0-rc2-win64.exe
>> Type = Nsis
>> Physical Size = 131097761
>> Method = LZMA:25
>> Solid = +
>> Headers Size = 205263
>> Embedded Stub Size = 114176
>> SubType = NSIS-3
>>
>> Everything is Ok
>>
>> Files: 291
>> Size:       1096683135
>> Compressed: 131097761
>>
>> S:\WCFB01\vctools\NonShip\ClangLLVM>dir /b
>> bin
>> include
>> lib
>> libexec
>> msbuild-bin
>> share
>> tools
>>
>> Now in my usual command prompt (where PATH, INCLUDE, and LIB are
>> unchanged):
>>
>> C:\Temp>where clang-cl
>> S:\WCFB01\vctools\NonShip\ClangLLVM\bin\clang-cl.exe
>>
>> C:\Temp>clang-cl -v -m32 /EHsc /nologo /W4 /MT meow.cpp && meow
>> clang version 5.0.0 (tags/RELEASE_500/rc2)
>> Target: i386-pc-windows-msvc
>> Thread model: posix
>> InstalledDir: S:\WCFB01\vctools\NonShip\ClangLLVM\bin
>>  "S:\\WCFB01\\vctools\\NonShip\\ClangLLVM\\bin\\clang-cl.exe" -cc1
>> -triple i386-pc-windows-msvc18.0.40629 -emit-obj -mrelax-all
>> -mincremental-linker-compatible -disable-free -main-file-name meow.cpp
>> -mrelocation-model static -mthread-model posix -mdisable-fp-elim
>> -relaxed-aliasing -fmath-errno -masm-verbose -mconstructor-aliases
>> -target-cpu pentium4 -D_MT -flto-visibility-public-std
>> --dependent-lib=libcmt --dependent-lib=oldnames -stack-protector 2
>> -fcxx-exceptions -fexceptions -fexternc-nounwind -fms-volatile
>> -fdiagnostics-format msvc -v -dwarf-column-info -debugger-tuning=gdb
>> -resource-dir "S:\\WCFB01\\vctools\\NonShip\\ClangLLVM\\lib\\clang\\5.0.0"
>> -internal-isystem "S:\\WCFB01\\vctools\\NonShip\
>> \ClangLLVM\\lib\\clang\\5.0.0\\include" -internal-isystem
>> "S:\\binaries\\x86ret\\atlmfc\\include" -internal-isystem
>> "S:\\binaries\\x86ret\\inc" -internal-isystem "S:\\WCFB01\\ExternalApis\\Windows\\10\\sdk\\inc"
>> -internal-isystem "S:\\WCFB01\\ExternalApis\\UnifiedCRT\\inc"
>> -internal-isystem "S:\\WCFB01\\ExternalAPIs\\DirectX\\Jun2010\\Include"
>> -WCL4 -fdeprecated-macro -fdebug-compilation-dir "C:\\Temp" -ferror-limit
>> 19 -fmessage-length 120 -fms-extensions -fms-compatibility
>> -fms-compatibility-version=18.0.40629 -std=c++11 -fno-threadsafe-statics
>> -fdelayed-template-parsing -fobjc-runtime=gcc -fdiagnostics-show-option
>> -fcolor-diagnostics -o "C:\\Users\\stl\\AppData\\Local\\Temp\\1\\meow-e93677.obj"
>> -x c++ meow.cpp
>> clang -cc1 version 5.0.0 based upon LLVM 5.0.0-rc2 default target
>> x86_64-pc-windows-msvc
>> #include "..." search starts here:
>> #include <...> search starts here:
>>  S:\WCFB01\vctools\NonShip\ClangLLVM\lib\clang\5.0.0\include
>>  S:\binaries\x86ret\atlmfc\include
>>  S:\binaries\x86ret\inc
>>  S:\WCFB01\ExternalApis\Windows\10\sdk\inc
>>  S:\WCFB01\ExternalApis\UnifiedCRT\inc
>>  S:\WCFB01\ExternalAPIs\DirectX\Jun2010\Include
>> End of search list.
>> In file included from meow.cpp:1:
>> In file included from S:\binaries\x86ret\inc\iostream:6:
>> In file included from S:\binaries\x86ret\inc\istream:6:
>> In file included from S:\binaries\x86ret\inc\ostream:6:
>> In file included from S:\binaries\x86ret\inc\ios:6:
>> In file included from S:\binaries\x86ret\inc\xlocnum:7:
>> In file included from S:\binaries\x86ret\inc\cmath:617:
>> In file included from S:\binaries\x86ret\inc\xtgmath.h:9:
>> S:\binaries\x86ret\inc\xtr1common(199,22) :  error: use of undeclared
>> identifier 'char16_t'
>>         struct _Is_integral<char16_t>
>>                             ^
>> S:\binaries\x86ret\inc\xtr1common(205,22) :  error: use of undeclared
>> identifier 'char32_t'
>>         struct _Is_integral<char32_t>
>>                             ^
>> In file included from meow.cpp:1:
>> In file included from S:\binaries\x86ret\inc\iostream:6:
>> In file included from S:\binaries\x86ret\inc\istream:6:
>> In file included from S:\binaries\x86ret\inc\ostream:6:
>> In file included from S:\binaries\x86ret\inc\ios:6:
>> In file included from S:\binaries\x86ret\inc\xlocnum:10:
>> In file included from S:\binaries\x86ret\inc\streambuf:6:
>> In file included from S:\binaries\x86ret\inc\xiosbase:6:
>> In file included from S:\binaries\x86ret\inc\xlocale:8:
>> In file included from S:\binaries\x86ret\inc\stdexcept:6:
>> In file included from S:\binaries\x86ret\inc\exception:7:
>> In file included from S:\binaries\x86ret\inc\type_traits:6:
>> S:\binaries\x86ret\inc\xstddef(257,2) :  error: 'auto' return without
>> trailing return type; deduced return types are a
>>       C++14 extension
>>         auto _Unfancy(_Ptrty _Ptr)
>>         ^
>> [...more errors...]
>>
>> Now I'm getting -fms-compatibility-version=18.0.40629 -std=c++11 which
>> is thoroughly incompatible with my development build's headers (in
>> S:\binaries\x86ret\inc).
>>
>> Let's add -fms-compatibility-version=19.11.25614 and see what happens:
>>
>> C:\Temp>clang-cl -v -m32 /EHsc /nologo /W4 /MT
>> -fms-compatibility-version=19.11.25614 meow.cpp && meow
>> clang version 5.0.0 (tags/RELEASE_500/rc2)
>> Target: i386-pc-windows-msvc
>> Thread model: posix
>> InstalledDir: S:\WCFB01\vctools\NonShip\ClangLLVM\bin
>>  "S:\\WCFB01\\vctools\\NonShip\\ClangLLVM\\bin\\clang-cl.exe" -cc1
>> -triple i386-pc-windows-msvc19.11.25614 -emit-obj -mrelax-all
>> -mincremental-linker-compatible -disable-free -main-file-name meow.cpp
>> -mrelocation-model static -mthread-model posix -mdisable-fp-elim
>> -relaxed-aliasing -fmath-errno -masm-verbose -mconstructor-aliases
>> -target-cpu pentium4 -D_MT -flto-visibility-public-std
>> --dependent-lib=libcmt --dependent-lib=oldnames -stack-protector 2
>> -fcxx-exceptions -fexceptions -fexternc-nounwind -fms-volatile
>> -fdiagnostics-format msvc -v -dwarf-column-info -debugger-tuning=gdb
>> -resource-dir "S:\\WCFB01\\vctools\\NonShip\\ClangLLVM\\lib\\clang\\5.0.0"
>> -internal-isystem "S:\\WCFB01\\vctools\\NonShip\
>> \ClangLLVM\\lib\\clang\\5.0.0\\include" -internal-isystem
>> "S:\\binaries\\x86ret\\atlmfc\\include" -internal-isystem
>> "S:\\binaries\\x86ret\\inc" -internal-isystem "S:\\WCFB01\\ExternalApis\\Windows\\10\\sdk\\inc"
>> -internal-isystem "S:\\WCFB01\\ExternalApis\\UnifiedCRT\\inc"
>> -internal-isystem "S:\\WCFB01\\ExternalAPIs\\DirectX\\Jun2010\\Include"
>> -WCL4 -fdeprecated-macro -fdebug-compilation-dir "C:\\Temp" -ferror-limit
>> 19 -fmessage-length 120 -fms-extensions -fms-compatibility
>> -fms-compatibility-version=19.11.25614 -std=c++14
>> -fdelayed-template-parsing -fobjc-runtime=gcc -fdiagnostics-show-option
>> -fcolor-diagnostics -o "C:\\Users\\stl\\AppData\\Local\\Temp\\1\\meow-06d238.obj"
>> -x c++ meow.cpp
>> clang -cc1 version 5.0.0 based upon LLVM 5.0.0-rc2 default target
>> x86_64-pc-windows-msvc
>> #include "..." search starts here:
>> #include <...> search starts here:
>>  S:\WCFB01\vctools\NonShip\ClangLLVM\lib\clang\5.0.0\include
>>  S:\binaries\x86ret\atlmfc\include
>>  S:\binaries\x86ret\inc
>>  S:\WCFB01\ExternalApis\Windows\10\sdk\inc
>>  S:\WCFB01\ExternalApis\UnifiedCRT\inc
>>  S:\WCFB01\ExternalAPIs\DirectX\Jun2010\Include
>> End of search list.
>>  "C:\\Program Files (x86)\\Microsoft Visual Studio
>> 12.0\\VC\\bin\\link.exe" -out:meow.exe -nologo
>> "C:\\Users\\stl\\AppData\\Local\\Temp\\1\\meow-06d238.obj"
>> libcmt.lib(new_scalar.obj) : warning LNK4229: invalid directive
>> '/ThrowingNew' encountered; ignored
>> libvcruntime.lib(trnsctrl.obj) : warning LNK4229: invalid directive
>> '/GUARDSYM:___CxxFrameHandler,S' encountered; ignored
>> libvcruntime.lib(trnsctrl.obj) : warning LNK4229: invalid directive
>> '/GUARDSYM:___CxxFrameHandler3,S' encountered; ignored
>> libvcruntime.lib(trnsctrl.obj) : warning LNK4229: invalid directive
>> '/GUARDSYM:___CxxFrameHandler2,S' encountered; ignored
>> libvcruntime.lib(trnsctrl.obj) : warning LNK4229: invalid directive
>> '/GUARDSYM:___CxxLongjmpUnwind at 4,S' encountered; ignored
>> libvcruntime.lib(chandler4.obj) : warning LNK4229: invalid directive
>> '/GUARDSYM:__except_handler4,S' encountered; ignored
>> libcmt.lib(loadcfg.obj) : error LNK2001: unresolved external symbol
>> ___guard_iat_table
>> libcmt.lib(loadcfg.obj) : error LNK2001: unresolved external symbol
>> ___guard_iat_count
>> libcmt.lib(loadcfg.obj) : error LNK2001: unresolved external symbol
>> ___guard_longjmp_table
>> libcmt.lib(loadcfg.obj) : error LNK2001: unresolved external symbol
>> ___guard_longjmp_count
>> meow.exe : fatal error LNK1120: 4 unresolved externals
>> clang-cl.exe: error: linker command failed with exit code 1120 (use -v to
>> see invocation)
>>
>> That additionally activates -std=c++14, and compilation succeeds.
>> However, VS 2013's linker is used - that's the "C:\\Program Files
>> (x86)\\Microsoft Visual Studio 12.0\\VC\\bin\\link.exe" - and it's unable
>> to understand various parts of VS 2017-era libraries.
>>
>> Trying to add -fuse-ld=S:\binaries\x86ret\bin\i386\link.exe doesn't work:
>>
>> C:\Temp>clang-cl -v -m32 /EHsc /nologo /W4 /MT
>> -fms-compatibility-version=19.11.25614 -fuse-ld=S:\binaries\x86ret\bin\i386\link.exe
>> meow.cpp && meow
>> clang version 5.0.0 (tags/RELEASE_500/rc2)
>> Target: i386-pc-windows-msvc
>> Thread model: posix
>> InstalledDir: S:\WCFB01\vctools\NonShip\ClangLLVM\bin
>>  "S:\\WCFB01\\vctools\\NonShip\\ClangLLVM\\bin\\clang-cl.exe" -cc1
>> -triple i386-pc-windows-msvc19.11.25614 -emit-obj -mrelax-all
>> -mincremental-linker-compatible -disable-free -main-file-name meow.cpp
>> -mrelocation-model static -mthread-model posix -mdisable-fp-elim
>> -relaxed-aliasing -fmath-errno -masm-verbose -mconstructor-aliases
>> -target-cpu pentium4 -D_MT -flto-visibility-public-std
>> --dependent-lib=libcmt --dependent-lib=oldnames -stack-protector 2
>> -fcxx-exceptions -fexceptions -fexternc-nounwind -fms-volatile
>> -fdiagnostics-format msvc -v -dwarf-column-info -debugger-tuning=gdb
>> -resource-dir "S:\\WCFB01\\vctools\\NonShip\\ClangLLVM\\lib\\clang\\5.0.0"
>> -internal-isystem "S:\\WCFB01\\vctools\\NonShip\
>> \ClangLLVM\\lib\\clang\\5.0.0\\include" -internal-isystem
>> "S:\\binaries\\x86ret\\atlmfc\\include" -internal-isystem
>> "S:\\binaries\\x86ret\\inc" -internal-isystem "S:\\WCFB01\\ExternalApis\\Windows\\10\\sdk\\inc"
>> -internal-isystem "S:\\WCFB01\\ExternalApis\\UnifiedCRT\\inc"
>> -internal-isystem "S:\\WCFB01\\ExternalAPIs\\DirectX\\Jun2010\\Include"
>> -WCL4 -fdeprecated-macro -fdebug-compilation-dir "C:\\Temp" -ferror-limit
>> 19 -fmessage-length 120 -fms-extensions -fms-compatibility
>> -fms-compatibility-version=19.11.25614 -std=c++14
>> -fdelayed-template-parsing -fobjc-runtime=gcc -fdiagnostics-show-option
>> -fcolor-diagnostics -o "C:\\Users\\stl\\AppData\\Local\\Temp\\1\\meow-74e9f6.obj"
>> -x c++ meow.cpp
>> clang -cc1 version 5.0.0 based upon LLVM 5.0.0-rc2 default target
>> x86_64-pc-windows-msvc
>> #include "..." search starts here:
>> #include <...> search starts here:
>>  S:\WCFB01\vctools\NonShip\ClangLLVM\lib\clang\5.0.0\include
>>  S:\binaries\x86ret\atlmfc\include
>>  S:\binaries\x86ret\inc
>>  S:\WCFB01\ExternalApis\Windows\10\sdk\inc
>>  S:\WCFB01\ExternalApis\UnifiedCRT\inc
>>  S:\WCFB01\ExternalAPIs\DirectX\Jun2010\Include
>> End of search list.
>>  "x86_64-pc-windows-msvc-S:\\binaries\\x86ret\\bin\\i386\\link.exe"
>> -out:meow.exe -nologo "C:\\Users\\stl\\AppData\\Loca
>> l\\Temp\\1\\meow-74e9f6.obj"
>> clang-cl.exe: error: unable to execute command: program not executable
>> clang-cl.exe: error: linker command failed with exit code 1 (use -v to
>> see invocation)
>>
>> Some searching led me to https://github.com/llvm-mirror
>> /clang/commit/635bc7fefc12cc1333ba6ec77e563b7c8af01265 "Accept absolute
>> paths in the -fuse-ld option." so I'm not sure why this doesn't work.
>>
>> I'm not picky about the linker (and I don't need debug info), so let's
>> try -fuse-ld=lld-link and see what happens:
>>
>> C:\Temp>clang-cl -v -m32 /EHsc /nologo /W4 /MT
>> -fms-compatibility-version=19.11.25614 -fuse-ld=lld-link meow.cpp && meow
>> clang version 5.0.0 (tags/RELEASE_500/rc2)
>> Target: i386-pc-windows-msvc
>> Thread model: posix
>> InstalledDir: S:\WCFB01\vctools\NonShip\ClangLLVM\bin
>>  "S:\\WCFB01\\vctools\\NonShip\\ClangLLVM\\bin\\clang-cl.exe" -cc1
>> -triple i386-pc-windows-msvc19.11.25614 -emit-obj -mrelax-all
>> -mincremental-linker-compatible -disable-free -main-file-name meow.cpp
>> -mrelocation-model static -mthread-model posix -mdisable-fp-elim
>> -relaxed-aliasing -fmath-errno -masm-verbose -mconstructor-aliases
>> -target-cpu pentium4 -D_MT -flto-visibility-public-std
>> --dependent-lib=libcmt --dependent-lib=oldnames -stack-protector 2
>> -fcxx-exceptions -fexceptions -fexternc-nounwind -fms-volatile
>> -fdiagnostics-format msvc -v -dwarf-column-info -debugger-tuning=gdb
>> -resource-dir "S:\\WCFB01\\vctools\\NonShip\\ClangLLVM\\lib\\clang\\5.0.0"
>> -internal-isystem "S:\\WCFB01\\vctools\\NonShip\
>> \ClangLLVM\\lib\\clang\\5.0.0\\include" -internal-isystem
>> "S:\\binaries\\x86ret\\atlmfc\\include" -internal-isystem
>> "S:\\binaries\\x86ret\\inc" -internal-isystem "S:\\WCFB01\\ExternalApis\\Windows\\10\\sdk\\inc"
>> -internal-isystem "S:\\WCFB01\\ExternalApis\\UnifiedCRT\\inc"
>> -internal-isystem "S:\\WCFB01\\ExternalAPIs\\DirectX\\Jun2010\\Include"
>> -WCL4 -fdeprecated-macro -fdebug-compilation-dir "C:\\Temp" -ferror-limit
>> 19 -fmessage-length 120 -fms-extensions -fms-compatibility
>> -fms-compatibility-version=19.11.25614 -std=c++14
>> -fdelayed-template-parsing -fobjc-runtime=gcc -fdiagnostics-show-option
>> -fcolor-diagnostics -o "C:\\Users\\stl\\AppData\\Local\\Temp\\1\\meow-1d7183.obj"
>> -x c++ meow.cpp
>> clang -cc1 version 5.0.0 based upon LLVM 5.0.0-rc2 default target
>> x86_64-pc-windows-msvc
>> #include "..." search starts here:
>> #include <...> search starts here:
>>  S:\WCFB01\vctools\NonShip\ClangLLVM\lib\clang\5.0.0\include
>>  S:\binaries\x86ret\atlmfc\include
>>  S:\binaries\x86ret\inc
>>  S:\WCFB01\ExternalApis\Windows\10\sdk\inc
>>  S:\WCFB01\ExternalApis\UnifiedCRT\inc
>>  S:\WCFB01\ExternalAPIs\DirectX\Jun2010\Include
>> End of search list.
>>  "S:\\WCFB01\\vctools\\NonShip\\ClangLLVM\\bin\\lld-link" -out:meow.exe
>> -nologo "C:\\Users\\stl\\AppData\\Local\\Temp\\1\\meow-1d7183.obj"
>> I am Clang: 5.0.0 (tags/RELEASE_500/rc2)
>>
>> That works, although I'm a little nervous about using this for our whole
>> test suite when it isn't the default.
>>
>> So my questions are:
>>
>> 1. Why is Clang 5.0 behaving differently from Clang 4.0 here? I see
>> https://github.com/llvm-mirror/clang/blob/master/lib/Driver/
>> ToolChains/MSVC.cpp trying to detect VS 2017 and other versions.
>>
>> 2. Is there a simple way for me to get Clang 4.0's behavior back, where
>> having cl.exe and link.exe on my PATH makes Clang automatically detect the
>> correct -fms-compatibility-version and link.exe to be used?
>>
>> Thanks,
>> STL
>>
>> _______________________________________________
>> cfe-dev mailing list
>> cfe-dev at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>>
>
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20170814/43aef1ce/attachment.html>


More information about the cfe-dev mailing list