On Tue Jun 20 08:32:45 2023 +0000, Rémi Bernon wrote:
It is not a barrier with normal load/store operations, but I believe it is with other volatile accesses. Everything that is written between `SHARED_WRITE_BEGIN` / `SHARED_WRITE_END` is volatile, so as I understand it, ordering should be guaranteed. 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. GCC >= 4.7 has them, which imho is old enough, 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.
In that case, wouldn't it suffice for `*(x)` to be volatile?