Benjamin Kosnik wrote:
>>> static inline _Atomic_word
>>> __attribute__ ((__unused__))
>>>- __exchange_and_add_dispatch(volatile _Atomic_word* __mem, int __val)
>>>+ __exchange_and_add_dispatch(_Atomic_word* __mem, int __val)
>>>
>>>
>>>
>>>
>>Agreed, but doing this means that in the improvements to rope that
>>Richard (and Hans) also want we have to call __exchange_and_add and
>>__atomic_add directly, because in that case the involved memory
>>locations are volatile and have to remain like that per Hans desiderata,
>>I gather.
>>
>>
>I find this somewhat confusing, but am going to go ahead with this, as
>I have other fixes in the pipeline for this file.
>
>
Agreed, agreed. I was just pointing out, for completeness, that we had a
very long discussion thread, Hans also participating: in that thread
Richard proposed to change rope to use the atomic functions and prepared
a patch. Hans was very happy with that patch besides the delicate point
that, because of races in some cases (i.e., accesses to the atomic
memory *not* using the primitives for performance reasons) the involved
memory had to remain volatile for now, to be more safe. Then, the
dispatchers could not be used...