GCC 11.1 Release Candidate available from gcc.gnu.org
Thu Apr 22 12:27:40 GMT 2021
On 21/04/21 15:30 +0100, Jonathan Wakely wrote:
>On 21/04/21 13:12 +0100, Jonathan Wakely wrote:
>>On 21/04/21 12:38 +0100, Jonathan Wakely wrote:
>>>On 20/04/21 22:12 -0700, Thomas Rodgers wrote:
>>>>@@ -86,6 +88,24 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
>>>>+ _GLIBCXX_ALWAYS_INLINE bool
>>>>+ _M_try_acquire() noexcept
>>>>+ for (;;)
>>>>+ auto __err = sem_trywait(&_M_semaphore);
>>>>+ if (__err && (errno == EINTR))
>>>>+ else if (__err && (errno == EAGAIN))
>>>>+ return false;
>>>>+ else if (__err)
>>>>+ return true;
>>>> _GLIBCXX_ALWAYS_INLINE void
>>>> _M_release(std::ptrdiff_t __update) noexcept
>>>Please just commit this part to trunk and gcc-11, not the macro
>>>renaming (as that's been fixed by Jakub already).
>>I think on trunk I'd prefer to do the attached. WDYT?
>In fact I think something like this is neded even on gcc-11 branch,
>otherwise anything that tries to include <semaphore> without atomics
>or sem_t gets hard errors:
>And <thread> includes <stop_token> which includes <semaphore>, meaning
><thread> is unusable on those targets.
>So I think removing this #error is essential:
>>-// Note: the _GLIBCXX_REQUIRE_POSIX_SEMAPHORE macro can be used to force the
>>-// use of Posix semaphores (sem_t). Doing so however, alters the ABI.
>>-#if defined __cpp_lib_atomic_wait && !_GLIBCXX_REQUIRE_POSIX_SEMAPHORE
>> using __semaphore_impl = __atomic_semaphore;
>>- using __semaphore_impl = __platform_semaphore;
>>-# error "No suitable semaphore implementation available"
>>+#endif // __cpp_lib_atomic_wait
Here's a simpler patch which just removes the #error and renames the
REQUIRE macro to USE. This still dumps the whole of <semaphore.h> and
<limits.h> in the global namespace when <semaphore> is included, but
we'll have to live with that for the 11.1 release.
I'm just finishing testing this on various targets and will push to
trunk. I'd like to backport it to gcc-11 too, to fix PR100179.
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 2422 bytes
Desc: not available
More information about the Libstdc++