This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: question on semantics
Chris Friesen wrote:
Mike Stump wrote:
It is safer to. People might compile your whole app at once for
better optimization, and the compiler might be just smart enough to
optimize it away.
One problem with using volatile is that it can destroy performance. I
only need to really read it in from memory the first time after I take a
lock, and flush it out to memory at the time I give up the lock. If I
specify it as volatile, I force the compiler to read/write memory on
*every* access, even when it's not necessary.
If you are concerned about this, why not explicitly code it by copying
the value in to a non-volatile temporary variable? Or make the variable
non-volatile and protect access with proper synchronization primitives.
I expect the compiler to do the best optimization possible within the
bounds of the language specification. As earlier posters have
expressed, I don't think it is wise to count on the compiler doing a
poor job of optimization in order to obtain desired program behavior.
David Daney