This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/54965] [4.6 Regression] sorry, unimplemented: inlining failed in call to 'foo': function not considered for inlining
- From: "rguenth at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Thu, 18 Oct 2012 09:52:27 +0000
- Subject: [Bug tree-optimization/54965] [4.6 Regression] sorry, unimplemented: inlining failed in call to 'foo': function not considered for inlining
- Auto-submitted: auto-generated
- References: <bug-54965-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54965
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2012-10-18
CC| |hubicka at gcc dot gnu.org,
| |rguenth at gcc dot gnu.org
Known to work| |4.5.4, 4.7.2
Target Milestone|--- |4.6.4
Summary|[4.6] sorry, unimplemented: |[4.6 Regression] sorry,
|inlining failed in call to |unimplemented: inlining
|'foo': function not |failed in call to 'foo':
|considered for inlining |function not considered for
| |inlining
Ever Confirmed|0 |1
Known to fail| |4.6.4
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> 2012-10-18 09:52:27 UTC ---
void combine_conjoint_xor_ca_float ()
{
combine_channel_t j = pd_combine_conjoint_xor, k = pd_combine_conjoint_xor;
a[0] = k (0, b, 0, a[0]);
a[0] = k (0, b, 0, a[0]);
a[0] = k (0, b, 0, a[0]);
a[0] = j (0, c[0], 0, a[0]);
a[0] = k (0, c[0], 0, a[0]);
a[0] = k (0, c[0], 0, a[0]);
a[0] = k (0, c[0], 0, a[0]);
you are using indirect function calls here, GCC in 4.6 is not smart enough
to transform them to direct calls before inlining. Inlining of
always-inline indirect function calls is not going to work reliably.
Don't use always-inline or don't use indirect function calls to always-inline
functions. It makes always-inline function calls survive until IPA inlining
where we seem to honor limits even though we say we should disregard them.
Honza?
Considering pd_combine_conjoint_xor with 383 size
to be inlined into combine_conjoint_xor_ca_float in t.i:53
Estimated growth after inlined into all callees is +748 insns.
Estimated badness is -2147483648, frequency 1.00.
Processing frequency pd_combine_conjoint_xor
Called by combine_conjoint_xor_ca_float that is normal or hot
Inlined into combine_conjoint_xor_ca_float which now has time 1402 and size
2342,net change of +374.
Considering pd_combine_conjoint_xor with 383 size
to be inlined into combine_conjoint_xor_ca_float in t.i:54
Estimated growth after inlined into all callees is +374 insns.
Estimated badness is -2147483648, frequency 1.00.
Not inlining into combine_conjoint_xor_ca_float:--param large-function-growth
limit reached.