From: Alfons Adriaensen
<fons.adriaensen(a)alcatel.be>
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