Re: Force inline without -O2

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

 



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