[EMAIL PROTECTED] (Kai Henningsen) writes: | [EMAIL PROTECTED] (Nathan Sidwell) wrote on 03.05.05 in <[EMAIL PROTECTED]>: | | > 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 :) | | As a QOI issue, it would be nice if such a situation caused a warning | ("ignoring volatile cast ..." or something like that).
such a warning is fine by me. Any one care to submit a patch? -- Gaby