On Thursday, 15 November 2012 at 22:57:54 UTC, Andrei Alexandrescu wrote:
On 11/15/12 1:29 PM, David Nadlinger wrote:
On Wednesday, 14 November 2012 at 17:54:16 UTC, Andrei Alexandrescu wrote:
That is correct. My point is that compiler implementers would follow some specification. That specification would contain informationt hat atomicLoad and atomicStore must have special properties that put them
apart from any other functions.

What are these special properties? Sorry, it seems like we are talking
past each other…

For example you can't hoist a memory operation before a shared load or after a shared store.

Well, to be picky, that depends on what kind of memory operation you mean – moving non-volatile loads/stores across volatile ones is typically considered acceptable.

But still, you can't move memory operations across any other arbitrary function call either (unless you can prove it is safe by inspecting the callee's body, obviously), so I don't see where atomicLoad/atomicStore would be special here.

David

Reply via email to