On Mon, 25 Jul 2022, Tom Honermann via Gcc-patches wrote: > diff --git a/gcc/ginclude/stdatomic.h b/gcc/ginclude/stdatomic.h > index bfcfdf664c7..75ed7965689 100644 > --- a/gcc/ginclude/stdatomic.h > +++ b/gcc/ginclude/stdatomic.h > @@ -49,6 +49,10 @@ typedef _Atomic long atomic_long; > typedef _Atomic unsigned long atomic_ulong; > typedef _Atomic long long atomic_llong; > typedef _Atomic unsigned long long atomic_ullong; > +#if (defined(__CHAR8_TYPE__) \ > + && (defined(_GNU_SOURCE) || defined(_ISOC2X_SOURCE))) > +typedef _Atomic __CHAR8_TYPE__ atomic_char8_t; > +#endif > typedef _Atomic __CHAR16_TYPE__ atomic_char16_t; > typedef _Atomic __CHAR32_TYPE__ atomic_char32_t; > typedef _Atomic __WCHAR_TYPE__ atomic_wchar_t;
GCC headers don't test glibc feature test macros such as _GNU_SOURCE and _ISOC2X_SOURCE; they base things only on the standard version (whether directly, or indirectly as via __CHAR8_TYPE__) and standard-defined feature test macros. (There's one exception in glimits.h - testing __USE_GNU, the macro defined internally by glibc's headers - but I don't think that's something we want to emulate in new code.) -- Joseph S. Myers jos...@codesourcery.com