<div class="gmail_quote">On Fri, Sep 21, 2012 at 3:15 PM, N.M. Maclaren <span dir="ltr"><<a href="mailto:nmm1@cam.ac.uk" target="_blank">nmm1@cam.ac.uk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div id=":2g2">It's there in the standard.  In C99, which is more readily accessible<br>
and very similar to C90, the relevant wording is mainly in 5.1.2.3,<br>
6.5 and 6.5.2.2.</div></blockquote></div><br><div>This says nothing about a memory model. Practically speaking, volatile accesses and sequence points only say that the instructions generated by the compiler should be ordered/cannot be elided. It does not prevent the CPU from reordering and does not require memory barriers so that the effects become visible in some specified order.</div>
<div><br></div><div>See C11 7.17.3 (Order and consistency) and 7.17.4 (Fences) for the sort of thing that we (and everyone else I have ever heard utter the phrase) mean when we say "memory model".</div><div><br>
</div><div><a href="http://en.wikipedia.org/wiki/Memory_model_(programming)">http://en.wikipedia.org/wiki/Memory_model_(programming)</a></div><div><a href="http://kernel.org/pub/linux/kernel/people/paulmck/perfbook/perfbook.html">http://kernel.org/pub/linux/kernel/people/paulmck/perfbook/perfbook.html</a></div>