But Some Existing Optimizing Compilers Including Gcc Which Tends To

But some existing optimizing compilers (including gcc, which tends to be relatively conservative) will “optimize” count_positives to something similar to
void count_positives(list l)
list p;
register int r;
r = global_positives;
for (p = l; p; p = p -> next)
if (p -> val > 0.0) ++r;
global_positives = r;
What problem or potential problem occurs with this compiled version of the program if threads A and B are executed concurrently?

Posted in Uncategorized