This is the mail archive of the
mailing list for the GCC project.
Implementing atomic load as compare-and-swap for read-only memory
- From: Kyrill Tkachov <kyrylo dot tkachov at foss dot arm dot com>
- To: "gcc at gcc dot gnu dot org" <gcc at gcc dot gnu dot org>
- Cc: "rth at redhat dot com" <rth at redhat dot com>
- Date: Fri, 03 Jun 2016 10:34:15 +0100
- Subject: Implementing atomic load as compare-and-swap for read-only memory
- Authentication-results: sourceware.org; auth=none
expand_atomic_load in optabs.c tries to expand a wide atomic load using an atomic_compare_and_swap
with the comment saying that sometimes a redundant harmless store may be performed.
Is the store really valid if the memory is read-only?
I've been looking at implementing a similar compare-and-swap strategy for atomic_loaddi for some
arm targets and this concern came up. I don't think GCC can statically prove that a particular
piece of memory is guaranteed to be writeable at runtime in all cases, so emitting a spurious
store would not be always valid.
I see this concern was already raised in https://gcc.gnu.org/ml/gcc-patches/2011-11/msg00278.html
but that doesn't seem to have gone anywhere.
Any thoughts? Should we remove the assumption that atomic loads always access writeable memory?