Fwiw I wouldn't mind using __atomic builtins everywhere, I'm not sure to see how it is better to have to argue about volatile semantics every time, to keep compatibility with some unknown compiler that would not support them.
I'd think it's better to have atomic helpers around like ReadAcquire in winnt.h? Anyway I'm not sure if volatile accesses are never reordered with atomic operations.
GCC >= 4.7 has them, which imho is old enough,
Atomic builtins are buggy prior to GCC 7.x (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81316 affects x86).
and I don't think we will ever build wineserver with MSVC, but if we do it would not be too difficult to adjust then.
MSVC was just an example; some people expect GCC volatile to act like MSVC.