[llvm] r255621 - Fix MSVC build with LLVM_ENABLE_THREADS=OFF

Kuperstein, Michael M via llvm-commits llvm-commits at lists.llvm.org
Tue Dec 15 07:59:07 PST 2015


I care less about the warnings, and more about the error regarding losing the const qualifier.
I'll see if I can figure it out.

Michael

-----Original Message-----
From: mehdi.amini at apple.com [mailto:mehdi.amini at apple.com] 
Sent: Tuesday, December 15, 2015 16:49
To: Kuperstein, Michael M
Cc: llvm-commits at lists.llvm.org
Subject: Re: [llvm] r255621 - Fix MSVC build with LLVM_ENABLE_THREADS=OFF

Hi,

I have no idea what these are, and I don't have MSVC or Windows to reproduce. I fixed the previous build breaks by searching on the web for the bug.
A quick "solution" for these warning would be to disable them with pragma.

--
Mehdi 

Sent from my iPhone

> On Dec 15, 2015, at 6:04 AM, Kuperstein, Michael M <michael.m.kuperstein at intel.com> wrote:
> 
> Hi,
> 
> I'm still getting warnings, as well as an error for the lambda in TheadPool.h.
> This is with MSVC2013 SP4.
> 
> Michael
> 
> 1>------ Build started: Project: SupportTests, Configuration: Release 
> 1>x64 ------
> 1>  ThreadPool.cpp
> 1>C:\Program Files (x86)\Microsoft Visual Studio 
> 1>12.0\VC\include\pplconcrt.h(158): warning C4530: C++ exception handler used, but unwind semantics are not enabled. Specify /EHsc C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\ppltasks.h(2461): warning C4062: enumerator '_Nothing' in switch of enum 'Concurrency::details::_Task_impl<_ReturnType>::_CancelAndRunContinuations::<unnamed-type-_Do>' is not handled
> 1>          with
> 1>          [
> 1>              _ReturnType=Concurrency::details::_Unit_type
> 1>          ]
> 1>          C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\ppltasks.h(2371) : see declaration of 'Concurrency::details::_Task_impl<_ReturnType>::_CancelAndRunContinuations::<unnamed-type-_Do>'
> 1>          with
> 1>          [
> 1>              _ReturnType=Concurrency::details::_Unit_type
> 1>          ]
> 1>          C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\ppltasks.h(2370) : while compiling class template member function 'bool Concurrency::details::_Task_impl<_ReturnType>::_CancelAndRunContinuations(bool,bool,bool,const std::shared_ptr<Concurrency::details::_ExceptionHolder> &)'
> 1>          with
> 1>          [
> 1>              _ReturnType=Concurrency::details::_Unit_type
> 1>          ]
> 1>          C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\ppltasks.h(7231) : see reference to class template instantiation 'Concurrency::details::_Task_impl<_ReturnType>' being compiled
> 1>          with
> 1>          [
> 1>              _ReturnType=Concurrency::details::_Unit_type
> 1>          ]
> 1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\ppltasks.h(2461): warning C4062: enumerator '_Nothing' in switch of enum 'Concurrency::details::_Task_impl<_ReturnType>::_CancelAndRunContinuations::<unnamed-type-_Do>' is not handled
> 1>          with
> 1>          [
> 1>              _ReturnType=std::pair<Concurrency::details::_Unit_type,Concurrency::details::_CancellationTokenState *>
> 1>          ]
> 1>          C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\ppltasks.h(2371) : see declaration of 'Concurrency::details::_Task_impl<_ReturnType>::_CancelAndRunContinuations::<unnamed-type-_Do>'
> 1>          with
> 1>          [
> 1>              _ReturnType=std::pair<Concurrency::details::_Unit_type,Concurrency::details::_CancellationTokenState *>
> 1>          ]
> 1>          C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\ppltasks.h(2370) : while compiling class template member function 'bool Concurrency::details::_Task_impl<_ReturnType>::_CancelAndRunContinuations(bool,bool,bool,const std::shared_ptr<Concurrency::details::_ExceptionHolder> &)'
> 1>          with
> 1>          [
> 1>              _ReturnType=std::pair<Concurrency::details::_Unit_type,Concurrency::details::_CancellationTokenState *>
> 1>          ]
> 1>          C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\ppltasks.h(2679) : see reference to class template instantiation 'Concurrency::details::_Task_impl<_ReturnType>' being compiled
> 1>          with
> 1>          [
> 1>              _ReturnType=std::pair<Concurrency::details::_Unit_type,Concurrency::details::_CancellationTokenState *>
> 1>          ]
> 1>          C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\ppltasks.h(2652) : while compiling class template member function 'bool Concurrency::task_completion_event<_CompletionType>::set(_ResultType) const'
> 1>          with
> 1>          [
> 1>              _CompletionType=std::pair<Concurrency::details::_Unit_type,Concurrency::details::_CancellationTokenState *>
> 1>  ,            _ResultType=std::pair<Concurrency::details::_Unit_type,Concurrency::details::_CancellationTokenState *>
> 1>          ]
> 1>          C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\ppltasks.h(7231) : see reference to function template instantiation 'bool Concurrency::task_completion_event<_CompletionType>::set(_ResultType) const' being compiled
> 1>          with
> 1>          [
> 1>              _CompletionType=std::pair<Concurrency::details::_Unit_type,Concurrency::details::_CancellationTokenState *>
> 1>  ,            _ResultType=std::pair<Concurrency::details::_Unit_type,Concurrency::details::_CancellationTokenState *>
> 1>          ]
> 1>          C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\ppltasks.h(6770) : see reference to class template instantiation 'Concurrency::task_completion_event<_CompletionType>' being compiled
> 1>          with
> 1>          [
> 1>              _CompletionType=std::pair<Concurrency::details::_Unit_type,Concurrency::details::_CancellationTokenState *>
> 1>          ]
> 1>          C:\Program Files (x86)\Microsoft Visual Studio 
> 1>12.0\VC\include\ppltasks.h(7211) : see reference to class template 
> 1>instantiation 
> 1>'Concurrency::details::_RunAnyParam<std::pair<Concurrency::details::
> 1>_Unit_type,Concurrency::details::_CancellationTokenState *>>' being 
> 1>compiled
> 1>C:\llvm\rw\include\llvm/Support/ThreadPool.h(73): error C3848: expression having type 'const std::_Bind<true,void,void (__cdecl *const )(std::atomic_int &,int),_Ty,size_t &>' would lose some const-volatile qualifiers in order to call 'void std::_Bind<true,void,void (__cdecl *const )(std::atomic_int &,int),_Ty,size_t &>::operator ()<>(void)'
> 1>          with
> 1>          [
> 1>              _Ty=std::reference_wrapper<std::atomic_int>
> 1>          ]
> ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped 
> ==========
> 
> -----Original Message-----
> From: llvm-commits [mailto:llvm-commits-bounces at lists.llvm.org] On 
> Behalf Of Mehdi Amini via llvm-commits
> Sent: Tuesday, December 15, 2015 07:54
> To: llvm-commits at lists.llvm.org
> Subject: [llvm] r255621 - Fix MSVC build with LLVM_ENABLE_THREADS=OFF
> 
> Author: mehdi_amini
> Date: Mon Dec 14 23:53:41 2015
> New Revision: 255621
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=255621&view=rev
> Log:
> Fix MSVC build with LLVM_ENABLE_THREADS=OFF
> 
> Follow-up to the ThreadPool implementation.
> 
> From: Mehdi Amini <mehdi.amini at apple.com>
> 
> Modified:
>    llvm/trunk/lib/Support/ThreadPool.cpp
> 
> Modified: llvm/trunk/lib/Support/ThreadPool.cpp
> URL: 
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/ThreadPool.
> cpp?rev=255621&r1=255620&r2=255621&view=diff
> ======================================================================
> ========
> --- llvm/trunk/lib/Support/ThreadPool.cpp (original)
> +++ llvm/trunk/lib/Support/ThreadPool.cpp Mon Dec 14 23:53:41 2015
> @@ -125,16 +125,25 @@ void ThreadPool::wait() {
>   while (!Tasks.empty()) {
>     auto Task = std::move(Tasks.front());
>     Tasks.pop();
> -    Task();
> +#ifndef _MSC_VER
> +        Task();
> +#else
> +        Task(/* unused */ false);
> +#endif
>   }
> }
> 
> std::shared_future<ThreadPool::VoidTy> ThreadPool::asyncImpl(TaskTy 
> Task) {
> +#ifndef _MSC_VER
>   // Get a Future with launch::deferred execution using std::async
>   auto Future = std::async(std::launch::deferred, std::move(Task)).share();
>   // Wrap the future so that both ThreadPool::wait() can operate and the
>   // returned future can be sync'ed on.
>   PackagedTaskTy PackagedTask([Future]() { Future.get(); });
> +#else
> +  auto Future = std::async(std::launch::deferred, std::move(Task), 
> +false).share();
> +  PackagedTaskTy PackagedTask([Future](bool) -> bool { Future.get(); 
> +return false; }); #endif
>   Tasks.push(std::move(PackagedTask));
>   return Future;
> }
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
> ---------------------------------------------------------------------
> Intel Israel (74) Limited
> 
> This e-mail and any attachments may contain confidential material for 
> the sole use of the intended recipient(s). Any review or distribution 
> by others is strictly prohibited. If you are not the intended 
> recipient, please contact the sender and delete all copies.
---------------------------------------------------------------------
Intel Israel (74) Limited

This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.



More information about the llvm-commits mailing list