On Mon, Oct 29, 2007 at 10:43:13 +0300, Tomash Brechko wrote:
> I think most pro-volatile people didn't understood the meaning of
> several papers in the Internet that say you have to use volatile.
And some don't understand the true purposes of volatile itself. In
the code below
volatile int *v = (int *) 0xdeadbeef;
void
f()
{
int i;
for (i = 0; i < N; ++i)
*v = 1;
}
_all_ N stores matter. Why? Because v may point to the device I/O
port, and the device may _count_ those writes among other things.
But if *v is simply shared, do all stores to it matter? No, only the
final value is relevant.
That's why -fno-speculative-store will never be equal to volatile, and
that's why it is needed to replace current volatile hammer.
--
Tomash Brechko