C++0x Memory model and gcc

Andrew MacLeod amacleod@redhat.com
Mon May 10 17:23:00 GMT 2010

On 05/10/2010 12:39 AM, Ian Lance Taylor wrote:
> Albert Cohen<Albert.Cohen@inria.fr>  writes:
>> I agree. Or even, =c++0x or =gnu++0x
>> On the other hand, I fail to see the differen between =single and
>> =fast, and the explanation about "the same memory word" is not really
>> relevant as memory models typically tell you about concurrent accesses
>> to "different memory words".
> What I was thinking is that the difference between =single and =fast
> is that =single permits store speculation.  The difference between
> =fast and =safe/=conformant is that =fast permits writing to a byte by
> loading a word, changing the byte, and storing the word; in
> particular, =fast permits write combining in cases where =safe does
> not.
> Memory models may not talk about memory words, but they exist
> nevertheless.
> Ian

I've changed the documentation and code to --params suggestion and the 
following, for now.  we can work out the exact wording and other options 

-fmemory-model=c++0x    - Disable data races as per architectural 
requirements to match the standard.
-fmemory-model=safe        - Disable all data race introductions. 
(enforce all 4 internal restrictions.)
-fmemory-model=single     - Enable all data races introductions, as they 
are today. (relax all 4 internal restrictions.)


More information about the Gcc mailing list