Thu Oct 24 05:09:55 EDT 2013
>This means that a processor might decide that "n+n" is less expensive
>than "2*n", and use that instead.
Sure, with probability zero.
>Is the processor allowed to fetch the volatile N twice, perhaps getting
>an even value the first time and an odd value the second time, thereby
>printing 'Size of A is odd'?
Sure, with probability zero. Memory accesses have always been slower than
>If not, should we amend 188.8.131.52.4p2 to prohibit transformations that
>change the number of references to volatile variables (or maybe only the
>ones that increase the number of references), at least in specification
No. Only a blithering idiot would write code like this. Volatile variables are
basically only hand-waved anyway, going down the rabbit hole of specifying
precisely handwaved semantics would be a waste of time, effort, and ink. The
original specification of volatile (everything in the whole program becomes
processor-dependent if the word volatile appears anywhere) would be better than
If it were not for the incompatibility, I'd be more inclined to prohibit
volatile variables from appearing in specification expressions at all.
................................Malcolm Cohen, Nihon NAG, Tokyo.
More information about the J3