Boost logo

Boost :

From: Peter Dimov (pdimov_at_[hidden])
Date: 2004-09-30 15:31:10


Alexander Terekhov wrote:
> Peter Dimov wrote:
>>
>> Alexander Terekhov wrote:
>>> Peter Dimov wrote:
>>>>
>>>> Alexander Terekhov wrote:
>>>>>> No, it's not; C++ behavior _is defined in terms of_ volatile (and
>>>>>> I/O calls), not the other way around.
>>>>>
>>>>> As if rule. And C++ says nothing about mutiple threads.
>>>>
>>>> Nope. "As if" is defined in terms of observable behavior, and
>>>> "observable behavior" is defined in terms of volatile and I/O.
>>>
>>> int main() {
>>> volatile int a = 1;
>>> return --a;
>>> }
>>>
>>> prove that it can't be transformed to
>>>
>>> int main() {
>>> }
>>
>> The observable behavior is
>>
>> write volatile @a 1
>
> nop
>
>> read volatile @a x
>
> nop
>
>> write volatile @a x-1
>
> nop
>
>> exit(x-1)
>
> push 0
> call _exit
>
>>
>> in the first case, and
>
> Happy now (debugger notwithstanding)?

No. A conforming compiler is not allowed to do that.

> C'mon, volatile is brain-dead.

Nobody's arguing otherwise. ;-) But a nop it isn't.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk