[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v1 3/5] include/qemu/atomic.h: default to __atom
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [PATCH v1 3/5] include/qemu/atomic.h: default to __atomic functions |
Date: |
Mon, 4 Apr 2016 22:15:13 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.6.0 |
On 04/04/2016 19:03, Paolo Bonzini wrote:
> I've looked at private email from that time and I was pointed to this
> sentence in GCC's manual, which says the opposite:
>
> "Note that in the C++11 memory model, fences (e.g.,
> ‘__atomic_thread_fence’) take effect in combination with other
> atomic operations on specific memory locations (e.g., atomic loads);
> operations on specific memory locations do not necessarily affect
> other operations in the same way."
And GCC is right, based on N3291 paragraph 29.8 ("Fences"):
----
A release fence A synchronizes with an acquire fence B if there exist
atomic operations X and Y, both operating on some atomic object M, such
that A is sequenced before X, X modifies M, Y is sequenced before B, and
Y reads the value written by X or a value written by any side effect in
the hypothetical release sequence X would head if it were a release
operation.
-----
It only mentions atomic operations, not plain loads and stores.
Paolo