https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65697
--- Comment #6 from torvald at gcc dot gnu.org --- (In reply to torvald from comment #5) > (In reply to Matthew Wahab from comment #0) > > while a __sync full > > barrier should block all movement > > (https://gcc.gnu.org/onlinedocs/gcc/_005f_005fsync-Builtins. > > html#_005f_005fsync-Builtins). > > But in your code example below, you didn't use __synch_synchronize. The > other __sync operations do not document that they are a full barrier, > AFAICS. (I'm not sure whether there is a wide assumption that they do.) No, you're right. They are "in most cases" considered to be a full barrier.