[LLVMdev] LLVM 3.6: problems building on Windows using MSVC 2013

Alan Garny agarny at hellix.com
Mon Mar 9 13:26:37 PDT 2015


Hi,

 

I have been using LLVM+Clang in my project for some time and it has been
working just fine up to now (I am currently using version 3.5.1).

 

However, with version 3.6 having just been released, I thought I would give
it a try and update my code to use MCJIT rather than the now discontinued
JIT. Well, this proved to be a relatively smooth process, and everything is
now working fine on Linux and OS X. However, on Windows, I am having
problems building LLVM+Clang. Actually, Clang itself, it would seem.

 

I guess it's worth mentioning that I don't build LLVM+Clang the 'normal'
way. Instead, LLVM+Clang is part of my project repository and I build it as
part of my project. Now, as mentioned above, I am having problems building
version 3.6 on Windows, this using MSVC 2013. I am basically getting things
like:

 

---------------------------------------

FAILED: C:\PROGRA~2\MICROS~2.0\VC\bin\X86_AM~1\cl.exe   /nologo /TP /DWIN32
/D_WINDOWS  /GR /EHsc /DNDEBUG /MD /O2 /Ob2 /wd4267 /wd4146 /wd4180 /wd4244
/wd4258 /wd4267 /wd4291 /wd4345 /wd4351 /wd4355 /wd4456 /wd4457 /wd4458
/wd4459 /wd4503 /wd4624 /wd4722 /wd4800 /w14062 /we4238
-Isrc\plugins\thirdParty\LLVM -I..\src\plugins\thirdParty\LLVM -I..\src\misc
-I..\src\plugins -I..\src\plugins\miscellaneous\Core\src
-I..\src\3rdparty\QtSingleApplication\src
-I..\src\plugins\thirdParty\LLVM\include
-I..\src\plugins\thirdParty\LLVM\lib\Target\X86
-I..\src\plugins\thirdParty\LLVM\src
-I..\src\plugins\thirdParty\LLVM\tools\clang\include
-IC:\Qt\5.4\msvc2013_64\include -IC:\Qt\5.4\msvc2013_64\include\QtCore
-IC:\Qt\5.4\msvc2013_64\mkspecs\win32-msvc2013 /showIncludes
-DLLVMPlugin_EXPORTS -DLLVM_PLUGIN -DQT_CORE_LIB -DQT_DEPRECATED_WARNINGS
-DQT_NO_DEBUG -DUNICODE -D_CRT_NONSTDC_NO_DEPRECATE
-D_CRT_NONSTDC_NO_WARNINGS -D_CRT_SECURE_NO_DEPRECATE
-D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_DEPRECATE
-D_SCL_SECURE_NO_WARNINGS -D_UNICODE -D__STDC_CONSTANT_MACROS
-D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS
/Fosrc\plugins\thirdParty\LLVM\CMakeFiles\LLVMPlugin.dir\tools\clang\lib\Dri
ver\Compilation.cpp.obj
/Fdsrc\plugins\thirdParty\LLVM\CMakeFiles\LLVMPlugin.dir\ /FS -c
..\src\plugins\thirdParty\LLVM\tools\clang\lib\Driver\Compilation.cpp

C:\Program Files (x86)\Microsoft Visual Studio
12.0\VC\INCLUDE\xutility(2045) : error C2280:
'std::unique_ptr<clang::driver::Job,std::default_delete<_Ty>>
&std::unique_ptr<_Ty,std::default_delete<_Ty>>::operator =(const
std::unique_ptr<_Ty,std::default_delete<_Ty>> &)' : attempting to reference
a deleted function

        with

        [

            _Ty=clang::driver::Job

        ]

        C:\Program Files (x86)\Microsoft Visual Studio
12.0\VC\INCLUDE\memory(1487) : see declaration of
'std::unique_ptr<clang::driver::Job,std::default_delete<_Ty>>::operator ='

        with

        [

            _Ty=clang::driver::Job

        ]

        C:\Program Files (x86)\Microsoft Visual Studio
12.0\VC\INCLUDE\xutility(2066) : see reference to function template
instantiation '_OutIt
std::_Copy_impl<_InIt,_OutIt>(_InIt,_InIt,_OutIt,std::_Nonscalar_ptr_iterato
r_tag)' being compiled

        with

        [

 
_OutIt=std::unique_ptr<clang::driver::Job,std::default_delete<clang::driver:
:Job>> *

,            _InIt=const
std::unique_ptr<clang::driver::Job,std::default_delete<clang::driver::Job>>
*

        ]

        C:\Program Files (x86)\Microsoft Visual Studio
12.0\VC\INCLUDE\xutility(2077) : see reference to function template
instantiation '_OutIt
std::_Copy_impl<_Iter,std::unique_ptr<clang::driver::Job,std::default_delete
<_Ty>>>(_InIt,_InIt,_OutIt)' being compiled

        with

        [

 
_OutIt=std::unique_ptr<clang::driver::Job,std::default_delete<clang::driver:
:Job>> *

,            _Iter=const
std::unique_ptr<clang::driver::Job,std::default_delete<clang::driver::Job>>
*

,            _Ty=clang::driver::Job

,            _InIt=const
std::unique_ptr<clang::driver::Job,std::default_delete<clang::driver::Job>>
*

        ]

        ..\src\plugins\thirdParty\LLVM\include\llvm/ADT/SmallVector.h(773) :
see reference to function template instantiation '_OutIt std::copy<const
std::unique_ptr<clang::driver::Job,std::default_delete<_Ty>>,std::unique_ptr
<_Ty,std::default_delete<_Ty>>*>(_InIt,_InIt,_OutIt)' being compiled

        with

        [

 
_OutIt=std::unique_ptr<clang::driver::Job,std::default_delete<clang::driver:
:Job>> *

,            _Ty=clang::driver::Job

,            _InIt=const
std::unique_ptr<clang::driver::Job,std::default_delete<clang::driver::Job>>
*

        ]

        ..\src\plugins\thirdParty\LLVM\include\llvm/ADT/SmallVector.h(761) :
while compiling class template member function 'llvm::SmallVectorImpl<T>
&llvm::SmallVectorImpl<T>::operator =(const llvm::SmallVectorImpl<T> &)'

        with

        [

 
T=std::unique_ptr<clang::driver::Job,std::default_delete<clang::driver::Job>
>

        ]

        ..\src\plugins\thirdParty\LLVM\include\llvm/ADT/SmallVector.h(915) :
see reference to function template instantiation 'llvm::SmallVectorImpl<T>
&llvm::SmallVectorImpl<T>::operator =(const llvm::SmallVectorImpl<T> &)'
being compiled

        with

        [

 
T=std::unique_ptr<clang::driver::Job,std::default_delete<clang::driver::Job>
>

        ]

        ..\src\plugins\thirdParty\LLVM\include\llvm/ADT/SmallVector.h(890) :
see reference to class template instantiation 'llvm::SmallVectorImpl<T>'
being compiled

        with

        [

 
T=std::unique_ptr<clang::driver::Job,std::default_delete<clang::driver::Job>
>

        ]

 
..\src\plugins\thirdParty\LLVM\tools\clang\include\clang/Driver/Job.h(169) :
see reference to class template instantiation
'llvm::SmallVector<std::unique_ptr<clang::driver::Job,std::default_delete<_T
y>>,4>' being compiled

        with

        [

            _Ty=clang::driver::Job

        ]

---------------------------------------

 

Now, the error message seems to make sense to me (after having had a quick
look at the code), but I am clearly missing something since not only does it
all work fine on Linux and OS X, but I was (obviously) also able to build
LLVM+Clang the 'normal' on Windows. So, what am I missing exactly?...

 

Cheers, Alan.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150309/56520469/attachment.html>


More information about the llvm-dev mailing list