how to disable optimization for particular assignment statements?
Marc Glisse
marc.glisse@inria.fr
Thu Nov 21 09:20:00 GMT 2013
On Thu, 21 Nov 2013, Marc Glisse wrote:
> On Thu, 21 Nov 2013, Andrew Makhorin wrote:
>
>> Hello,
>>
>> 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 assigments. 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?
>
> volatile
Well, volatile will prevent the operations from being removed. For proper
synchronization with other threads, using atomic operations with the right
synchronization parameter sounds better.
http://gcc.gnu.org/onlinedocs/gcc/_005f_005fatomic-Builtins.html
--
Marc Glisse
More information about the Gcc-help
mailing list