Re: Force inline without -O2

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Dec 23, 2009 at 1:55 AM, Ian Lance Taylor <iant@xxxxxxxxxx> wrote:
> isuru herath <isuru81@xxxxxxxxx> 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


[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux