This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [patch libstdc++] Optimize synchronization in std::future if futexes are available.
- From: Jonathan Wakely <jwakely at redhat dot com>
- To: Hans-Peter Nilsson <hp at bitrange dot com>
- Cc: pinskia at gmail dot com, David Edelsohn <dje dot gcc at gmail dot com>, Torvald Riegel <triegel at redhat dot com>, GCC Patches <gcc-patches at gcc dot gnu dot org>, "libstdc++ at gcc dot gnu dot org" <libstdc++ at gcc dot gnu dot org>
- Date: Sat, 17 Jan 2015 13:48:53 +0000
- Subject: Re: [patch libstdc++] Optimize synchronization in std::future if futexes are available.
- Authentication-results: sourceware.org; auth=none
- References: <CAGWvnyng32Rh7US3Azhao9B=JMnsZaJ_1vRik36wQ4FKWm1BkQ at mail dot gmail dot com> <9CAB68C4-08D2-43A1-9A8B-EDE135DDFC8F at gmail dot com> <alpine dot BSF dot 2 dot 02 dot 1501170144070 dot 76242 at arjuna dot pair dot com>
On 17/01/15 01:45 -0500, Hans-Peter Nilsson wrote:
On Fri, 16 Jan 2015, pinskia@gmail.com wrote:
> On Jan 16, 2015, at 9:57 PM, David Edelsohn <dje.gcc@gmail.com> wrote:
>
> This patch has broken bootstrap on AIX
>
> May I mention that this really should have been tested on systems
> other than x86 Linux.
It also broke all newlib targets too. So you could have tested one listed in the sim-test web page.
For those interested, PR64638.
Should be fixed in trunk now, by this patch.
commit a0fe2162e3b10f6d35e4ea73bae209081bf2e9c2
Author: Jonathan Wakely <jwakely@redhat.com>
Date: Sat Jan 17 13:29:17 2015 +0000
PR libstdc++/64638
* include/bits/atomic_futex.h: Use appropriate config macros for
availability of std::mutex, std::condition and std::chrono.
diff --git a/libstdc++-v3/include/bits/atomic_futex.h b/libstdc++-v3/include/bits/atomic_futex.h
index 9a418d8..2673604 100644
--- a/libstdc++-v3/include/bits/atomic_futex.h
+++ b/libstdc++-v3/include/bits/atomic_futex.h
@@ -48,6 +48,7 @@ namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION
+#if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1)
#if defined(_GLIBCXX_HAVE_LINUX_FUTEX)
struct __atomic_futex_unsigned_base
{
@@ -209,7 +210,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
};
-#else
+#else // !_GLIBCXX_HAVE_LINUX_FUTEX
// If futexes are not available, use a mutex and a condvar to wait.
// Because we access the data only within critical sections, all accesses
@@ -280,7 +281,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
};
-#endif
+#endif // _GLIBCXX_HAVE_LINUX_FUTEX
+#endif // _GLIBCXX_HAS_GTHREADS && _GLIBCXX_USE_C99_STDINT_TR1
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace std