> > In this example > > static inline int f (int x) { return x + 1; } > > static inline int g (int x, inline int f (int x)) > { return 1 + f (x); } > > int h (int x) > { return g (x, f); } > > is h supposed to optimize to return x + 2 or supposed to actually call > f. Here's what I get with current gcc mainline cvs -O2 > > f: > leal 1(%rdi), %eax > ret > > h: > call f > incl %eax > ret > > Is this a bug? If not, how to I get gcc to emit "return x + 2"?
Currently GCC never inline indirect calls (even tought it did before unit-at-a-time has been implemented). We will hopefully get this feature back with IPA constant propagation and clonning. Honza > > Thanks, > > Eliot