[Bug middle-end/47663] Very simple wrapper not inlined
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Feb 10 13:08:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47663
Richard Guenther <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Severity|normal |enhancement
--- Comment #2 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-02-10 13:05:14 UTC ---
We want to inline all cases of
int foo0();
void bar0() { foo0(); }
void foobar0() { bar0(); }
void foo1();
void bar1() { foo1(); }
void foobar1() { bar1(); }
int foo2();
int bar2() { return foo2(); }
void foobar2() { bar2(); }
int foo3();
int bar3() { return foo3(); }
void foobar3() { return bar3(); }
int bar4() { return 0; }
void foobar4() { bar4(); }
int bar5() { return 0; }
void foobar5() { return bar5(); }
and corresponding versions that return an aggregate at
-O -finline-small-functions --param early-inlining-insns=0
(thus, with strict non-growth limits).
To achieve that we probably need to track whether a callgraph-edge
caller uses its return value (or even better, store the call cost
in the cgraph-edge instead of computing it based on the type of
the callee).
More information about the Gcc-bugs
mailing list