Geoff Keating <[EMAIL PROTECTED]> writes:

| On 22/07/2005, at 4:33 PM, Ian Lance Taylor wrote:
| 
| > Geoffrey Keating <[EMAIL PROTECTED]> writes:
| >
| >> Although I can see that this is how you might think about the
| >> semantics of 'const' and 'volatile', I don't think they're an exact
| >> match for the model in the standard.  In fact, I think you could
| >> exchange the words 'const' and 'volatile' in the above and they would
| >> be equally accurate.
| >>
| >
| > Sure, and I think my ultimate point would still be accurate: gcc
| > should handle the access using the qualification of the pointer, not
| > of the underlying object.  The rest of the argument is just
| > motivation.
| 
| By "equally accurate", I also meant "equally inaccurate".
| 
| You've successfully argued that 'const' and 'volatile' are the same
| in lots of ways; but 'const' and 'volatile' do differ.  In order to
| be successful in this argument, you need to argue that the
| differences don't matter.
| 
| And, unfortunately, the differences *do* matter.  The standard does
| not say "any expression referring to a volatile-qualified type must
| be evaluated strictly according to the rules of the abstract
| machine".  What it says is that "An object that has volatile
| qualified type may be modified in ways unknown to the implementation"
| and then lists some of the consequences of an object being modifiable
| in that way.  So there are no "semantics of the access"; the
| semantics attach to the object.

I disagree with statement.  There is a "semantics of access".  It is
implementation-defined.

| This is part of what I meant by saying that your model isn't a match
| for the model in the standard.  Your model had semantics attached to
| the access.

On the contrary, I find his moel most faithful than the interpretation
you offer.  The standard describes things like side effect and such in
terms of *access*.  

-- Gaby

Reply via email to