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