This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug tree-optimization/54965] [4.6 Regression] sorry, unimplemented: inlining failed in call to 'foo': function not considered for inlining


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]