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.

Reply via email to