volatile semantics

Nathan Sidwell nathan@codesourcery.com
Tue May 3 14:41:00 GMT 2005


Mike Stump wrote:
> int avail;
> int main() {
>   while (*(volatile int *)&avail == 0)
>     continue;
>   return 0;
> }
> 
> 
> Ok, so, the question is, should gcc produce code that infinitely  loops, 
> or should it be obligated to actually fetch from memory?   Hint, 3.3 
> fetched.

I beleive the compiler is so licensed. [5.1.2.3/2] talks about accessing
a volatile object.  If the compiled can determine the actual object
being accessed through a series of pointer and volatile cast conversions,
then I see nothing in the std saying it must behave as-if the object
were volatile when it is not.

This, of course, might not be useful to users :)

nathan

-- 
Nathan Sidwell    ::   http://www.codesourcery.com   ::     CodeSourcery LLC
nathan@codesourcery.com    ::     http://www.planetfall.pwp.blueyonder.co.uk



More information about the Gcc mailing list