>From: Alfons Adriaensen <[EMAIL PROTECTED]> > >I don't have your original message with the code at hand here, so >this may be a false alarm. Did you think of making all pointers >into shared memory volatile? IIRC you are testing on a counter >that is incremented by another process - such a small memory access >could easily be optimised away.
And that was it!! What braindamaged compiler authors! In the code k = -1; for (;;) { if (k != nums[1]) { k = nums[1]; fprintf(stderr,"%i\n",k); } fprintf(stderr,"g"); } The whole if was apperently optimized away. The code printed only one number and a lot of "g"s. Of the two choises (1) nums[1] is updated elsewhere, (2) it is unnecessary code, coder just tries to be clever, the compiler authors selected the latter. Here is my suggestion to C standard: replace the "volatile" with "goaheadandoptimizetheseawayiwerejustwastingmytimeincodingthese theydonotmeananythingactually". Instead of forcing legitimate coders to write volatile everywhere, those fools who write unnecessary code should be forced to add the proposed qualifier. Juhana