Re: Force inline without -O2

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

 



Hi Ian,

Thanks for the quick response. It worked. You saved me.

thanks and regards,
Isuru

--- On Tue, 12/22/09, Ian Lance Taylor <iant@xxxxxxxxxx> wrote:

> From: Ian Lance Taylor <iant@xxxxxxxxxx>
> Subject: Re: Force inline without -O2
> To: "isuru herath" <isuru81@xxxxxxxxx>
> Cc: gcc-help@xxxxxxxxxxx
> Date: Tuesday, December 22, 2009, 9:55 AM
> 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.
> 
> If you must have this be inline even when not optimizing, I think you
> will need to use a macro.
> 
> #define READ() \
>   ({ \
>       unsigned long data; \
>       asm volatile ("movl %%eax, %0", : "=g" (data)); \
>       data; \
>    })
> 
> Ian
> 


      


[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