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"? Thanks, Eliot