I have a C code like this:
int foo(void)
{
int phase;
. . .
phase = 1;
phase = 2;
phase = 3;
. . .
}
In case of -O0 gcc generates machine instructions for every assignment 'phase = ...'. But in case of -O2 gcc does not generate instructions for some assignments. Of course, this is correct. However, is there any way to tell gcc that 'phase' object is inspected by another thread, so it should not remove such statements?