[patch libstdc++] Optimize synchronization in std::future if futexes are available.
Sandra Loosemore
sandra@codesourcery.com
Sun Jan 18 08:37:00 GMT 2015
On 01/17/2015 03:58 PM, Jonathan Wakely wrote:
>
> My fault, this additional chunk is needed alongside the patch I sent
> earlier:
>
> --- a/libstdc++-v3/include/bits/atomic_futex.h
> +++ b/libstdc++-v3/include/bits/atomic_futex.h
> @@ -35,7 +35,7 @@
> #include <bits/c++config.h>
> #include <atomic>
> #include <chrono>
> -#if !defined(_GLIBCXX_HAVE_LINUX_FUTEX)
> +#if ! (defined(_GLIBCXX_HAVE_LINUX_FUTEX) && ATOMIC_INT_LOCK_FREE > 1)
> #include <mutex>
> #include <condition_variable>
> #endif
>
> What I sent earlier causes your target to use std::mutex and
> std::condition_variable, but without the bit above the headers aren't
> included.
Still no joy:
/scratch/sandra/arm-fsf2/src/gcc-mainline/libstdc++-v3/src/c++11/futex.cc:45:3:
error: '__atomic_futex_unsigned_base' has not been declared
__atomic_futex_unsigned_base::_M_futex_wait_until(unsigned *__addr,
^
/scratch/sandra/arm-fsf2/src/gcc-mainline/libstdc++-v3/src/c++11/futex.cc:88:3:
error: '__atomic_futex_unsigned_base' has not been declared
__atomic_futex_unsigned_base::_M_futex_notify_all(unsigned* __addr)
^
>>>> Maybe the patch(es) causing all these problems should be reverted
>>>> until the breakage is tracked down and fixed and regression-tested on
>>>> a variety of targets? It's not really blocking me at the moment, but
>>>> it seems unfortunate that trunk is so unstable as we're entering Stage
>>>> 4.....
>
> Torvald, if the extra change above doesn't fix it (although it should
> do) then maybe it should be reverted until it can be tested more
> widely.
-Sandra
More information about the Gcc-patches
mailing list