On Wed, Jul 25, 2012 at 8:25 PM, David Brown <david.br...@hesbynett.no> wrote:
> On 25/07/12 17:30, Richard Guenther wrote:
>>
>> On Wed, Jul 25, 2012 at 4:07 PM, Selvaraj, Senthil_Kumar
>> <senthil_kumar.selva...@atmel.com>  wrote:
>>>
>>> Declaring a function with __attribute__((optimize("O0")) turns off
>>> inlining for the translation unit (atleast) containing the function
>>> (see output at the end). Is this expected behavior?
>>
>>
>> Not really.  The optimize attribute processing should only affect
>> flags it saves.  -f[no-]inline is not meaningful per function and we
>> have the noinline attribute for more proper handling.
>>
>> That said, I consider the optimize attribute code seriously broken
>> and unmaintained (but sometimes useful for debugging - and only
>> that).
>>
>
> That's a pity.  It's understandable - changing optimisation levels on
> different functions is always going to be problematic, since inter-function
> optimisations (like inlining) are going to be difficult to define.  But
> sometimes it could be nice to use specific optimisations in specific places,
> such as loop unrolling in a critical function while other code is to be
> optimised for code size.  Does "#pragma Gcc optimize" work more reliably?

No, it uses the same mechanism internally.

Richard.

Reply via email to