[LLVMdev] [PATCH] Replace the Execution Engine's mutex with std::recursive_mutex

Zachary Turner zturner at google.com
Fri Jun 20 09:49:43 PDT 2014


I kind of feel like we should drop support for this configuration.  Here
are the reasons why:

1) clang, lld, and other LLVM-based tools already make use of
std::recursive_mutex and std::mutex, so if those types don't exist in this
one configuration, we have already (even if inadvertently) made a statement
that we don't support that configuration.

2) We chose C++11 as the baseline because all compilers should support it.
 This functionality in particular is pretty egregious to not support,
considering how simple it is.

3) Not supporting this configuration does not mean we don't support GCC /
MinGW, it only means we don't support GCC / MinGW / threads-win32.   There
is still the threads-posix flavor of this platform which works fine on
Windows.

#3 is a little unfortunate and backwards, since on Windows we should be
encouraging native Windows implementations of things and discouraging posix
emulation, but in this case the functionality just isn't implemented.


On Fri, Jun 20, 2014 at 9:26 AM, Zachary Turner <zturner at google.com> wrote:

> +llvmdev.
>
> I find this pretty surprising.  Actually, we already use std::mutex and
> std::recursive_mutex in clang, lld, and other llvm projects, it's just a
> coincidence that it hadn't been introduced into LLVM until my commits.
>
> I'm not sure what the right thing to do here is.  If I understand
> correctly, it seems like in order to encounter this, a) you must be using
> GCC, b) you must be using the MinGW flavor of GCC, and c) you must be using
> the threads-win32 flavor of this toolchain.   Only if all 3 of those are
> true, then std::mutex and std::recursive_mutex don't exist.
>
> Anybody else have thoughts on whether this necessitates reverting the
> mutex changes, or whether this toolchain configuration should be supported?
>
>
> On Fri, Jun 20, 2014 at 12:07 AM, Vadim Chugunov <vadimcn at gmail.com>
> wrote:
>
>> FYI - this commit broke LLVM build using [[
>> http://stackoverflow.com/questions/13212342/whats-the-difference-between-thread-posixs-and-thread-win32-in-gcc-port-of-windo
>> | win32 threads ]] flavor of the mingw toolchain.  I am getting [[
>> http://stackoverflow.com/questions/14191566/c-mutex-in-namespace-std-does-not-name-a-type
>> | error: 'recursive_mutex' in namespace 'std' does not name a type ]].
>> Not sure if this would be considered a problem for LLVM...
>>
>> http://reviews.llvm.org/D4196
>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140620/f2f231f4/attachment.html>


More information about the llvm-dev mailing list