> -----Original Message----- > From: Richard Guenther [mailto:richard.guent...@gmail.com] > Sent: 13 October 2009 16:15 > To: Bingfeng Mei > Cc: gcc@gcc.gnu.org > Subject: Re: LTO question > > On Tue, Oct 13, 2009 at 2:47 PM, Bingfeng Mei > <b...@broadcom.com> wrote: > > Hello, > > I just had the first taste with the latest LTO merge on our port. > > Compiler is configured with LTO enabled and built correctly. > > I tried the following example: > > > > a.c > > extern void foo(int); > > int main() > > { foo(20); > > return 1; > > } > > > > b.c > > #include <stdio.h> > > void foo(int c) > > { > > printf("Hello world: %d\n", c); > > } > > > > compiled with: > > firepath-elf-gcc -flto a.c b.c -save-temps -O2 > > > > I expected that foo should be inlined into main, but not. > Both functions > > of main and foo are present in a.s, while b.s contains the > LTO code. > > > > Did I miss something here? Are there new hooks I should > specify or tune for > > LTO? I checked the up-to-date internal manual and found nothing. > > non-inline declared functions are inlined at -O2 only if doing so > does not increase program size. Use -O3 or -finline-functions.
But the function is only called once here. It should always decrease size unless my cost function is terribly wrong. I will check how other targets such as x86 do here. > > Richard. > > > Thanks, > > Bingfeng Mei > > > > > > > >