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 
later.

-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.)

Andrew




More information about the Gcc mailing list