Hi, on ARMv7, the code generated for the __atomic_load builtins in the __ATOMIC_ACQUIRE memory model, puts a memory barrier before the load, whereas the semantic of the acquire memory model implies a barrier after. The issue seems to be in expand_atomic_load which puts a memory fence before the load in any memory model. The attached patch fixes the problem. Thanks, Yvan