------- Comment #4 from rguenth at gcc dot gnu dot org 2010-02-13 19:38 ------- With that we get the much more sane
Deciding on functions called once: Considering define_strings size 840. Called once from Init_libxg 37 insns. Inlined into Init_libxg which now has 876 size for a net change of -841 size. Considering define_integers size 11078. Called once from Init_libxg 876 insns. Not inlining: --param large-function-growth limit reached. Considering define_doubles size 56. Called once from Init_libxg 876 insns. Inlined into Init_libxg which now has 931 size for a net change of -57 size. Considering define_functions size 78022. Called once from Init_libxg 931 insns. Not inlining: --param large-function-growth limit reached. Considering define_atoms size 119. Called once from Init_libxg 931 insns. Inlined into Init_libxg which now has 1049 size for a net change of -120 size. Considering define_structs size 757. Called once from Init_libxg 1049 insns. Inlined into Init_libxg which now has 1805 size for a net change of -758 size. The problem with the present code is that as long as the function we want to inline is LARGE_FUNCTION_GROWTH percent bigger than the caller we will continue to grow the caller up to infinite size. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43058