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