Force inline without -O2
Jie Zhang
jzhang918@gmail.com
Mon Dec 28 05:32:00 GMT 2009
On Wed, Dec 23, 2009 at 1:55 AM, Ian Lance Taylor <iant@google.com> wrote:
> isuru herath <isuru81@yahoo.com> writes:
>
>> I am writing a C code with inline method.
>>
>> static inline unsigned int READ()
>> {
>> unsigned long data;
>> asm volatile ("movl %%eax, %0" : "=g" (data) : );
>> return (unsigned int) data;
>> }
>>
>> I dont want to this appear as a method call in the executable. I want to
>> make in inlined to the code. I tried different methods.
>>
>> 1. I compiled with -finline-functions. Still it apears as a method call in
>> the assembly generated.
>>
>> 2. Used the attribute __attribute__((always_inline));. Still it appears as
>> a method call.
>>
>> But when I compiled with -O2 it doesnot make it a method call. But for my
>> current work I cannot have optimizations enabled. Therefore I am looking
>> for a way to inline this function in the assembly generated. I am not sure
>> I can achieve this behavior with macros since I need to return data from
>> it.
>
> The compiler generally does not inline functions if you are not
> optimizing.
>
I think __attribute__((always_inline)) is used to inline functions
even not optimizing. Below is from GCC manual:
always_inline
Generally, functions are not inlined unless optimization is
specified. For functions declared inline, this attribute inlines the
function even if no optimization level was specified.
Jie
More information about the Gcc-help
mailing list