[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 06:04:19 PST 2015


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 x64 ------
1>  ThreadPool.cpp
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\pplconcrt.h(158): warning C4530: C++ exception handler used, but unwind semantics are not enabled. Specify /EHsc
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=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 12.0\VC\include\ppltasks.h(7211) : see reference to class template instantiation 'Concurrency::details::_RunAnyParam<std::pair<Concurrency::details::_Unit_type,Concurrency::details::_CancellationTokenState *>>' being 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.


More information about the llvm-commits mailing list