On Thu, Feb 27, 2020 at 7:20 AM Chris Hall <gcc@xxxxxxx> wrote: > Now, the Standard also tells us that _Atomic(uint64_t) and uint64_t may > have different sizes, representations and alignment. So I guess: > bar = atomic_fetch_add(&bar, 1) ; > should be an error ? __atomic_fetch_add accepts any integer or pointer type. So the fact that _Atomic(uint64_t) and uint64_t may be different types is not a problem, as long as they are still integer types. This works like an overloaded function in C++. https://gcc.gnu.org/onlinedocs/gcc-9.2.0/gcc/_005f_005fatomic-Builtins.html#g_t_005f_005fatomic-Builtins Jim