On Tue, 2018-02-27 at 10:22 +0000, Ramana Radhakrishnan wrote: > The way to fix this in AArch64 if there is a > guarantee from the standard that there are no problems with read-only > locations is to implement the change in libatomic.
Even though the standard doesn't specify read-only memory, I think that consensus in ISO C++ SG1 (ie, the concurrency study group) exists that it makes sense for implementations to not declare something lock-free if the hardware doesn't provide a true atomic load for the particular size/alignment. It is an implementation-level decision though (given that the details of the as-if rule depend on what's doable on the particular implementation), and I do not see a reason to change GCC's stance on this.