On 04/09/2016 09:03 AM, Vitaly Davidovich wrote:
Just to confirm - opaque is also a compiler fence right? C++ relaxed doesn't require compiler fence, but it sounds like opaque does. Would be good to clarify this, unless "program order" is the way you want to do that.
"Program order" normally requires a compiler fence. Most people don't know what a compiler fence is though, and it is not especially easy to define. So I don't think this would help. -Doug
On Saturday, April 9, 2016, Doug Lea <d...@cs.oswego.edu <mailto:d...@cs.oswego.edu>> wrote: On 04/08/2016 02:39 PM, Hans Boehm wrote: My prior impression was that Opaque was intended to be similar to a C++ memory_order_relaxed access to a variable that is declared as both atomic and volatile, with the unordered interpretation of C++ "volatile". Yes. This is awkward to spell out in detail, but surely there is some way to say it that is more illuminating than confusing. Especially since the implementation on all known processors is straightforward -- reading/writing (all bits atomically) in program order. -Doug -- Sent from my phone