http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56028



--- Comment #3 from Evgeniy Stepanov <eugeni.stepanov at gmail dot com> 
2013-01-18 11:57:07 UTC ---

(In reply to comment #2)

> See 1.9p8 of the C++11 standard, first bullet:

> 

> "Access to volatile objects are evaluated strictly according to the rules of

> the abstract machine."

> 

> From what I can see, implementing a store to a volatile DImode location as two

> consecutive SImode stores to adjacent locations violates this aspect of the

> standard.  Furthermore, to expand on your parenthesized statement above, gcc

> might not operate reliably if the device drivers in the kernel it is running 
> on

> have their 64-bit immediate stores broken into pairs of 32-bit immediate

> stores.  ;-)



So, what are these "rules of the abstract machine", and why do they allow

non-atomic store of a large volatile aggregate (it is definitely not atomic,

right?), and require atomicity for volatile long?

Reply via email to