http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54965

             Bug #: 54965
           Summary: [4.6] sorry, unimplemented: inlining failed in call to
                    'foo': function not considered for inlining
    Classification: Unclassified
           Product: gcc
           Version: 4.6.4
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: siarhei.siamas...@gmail.com


Created attachment 28474
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=28474
reduced.i

GCC 4.6 fails when compiling current git versions of pixman:
https://bugs.freedesktop.org/show_bug.cgi?id=55630

Bisecting shows that this problem started occurring in 4.6 branch after the
following commit:
http://gcc.gnu.org/git/?p=gcc.git;a=commit;h=3d5f815b529fe4b8b79d4f2a04e6eb670faee04d

3d5f815b529fe4b8b79d4f2a04e6eb670faee04d is the first bad commit
commit 3d5f815b529fe4b8b79d4f2a04e6eb670faee04d
Author: hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>
Date:   Thu Nov 11 22:08:26 2010 +0000

        PR tree-optimize/40436
        * gcc.dg/tree-ssa/inline-5.c: New testcase.
        * gcc.dg/tree-ssa/inline-6.c: New testcase.

        * ipa-inline.c (likely_eliminated_by_inlining_p): Rename to ...
        (eliminated_by_inlining_prob): ... this one; return 50% probability for
        SRA.
        (estimate_function_body_sizes): Update use of
eliminated_by_inlining_prob;
        estimate static function size for 2 instructions.

    git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@166624
138bc75d-0d04-0410-961f-82ee72b054a4


The problem disappears in 4.7 branch after:
http://gcc.gnu.org/git/?p=gcc.git;a=commit;h=526b36a8a249c8c8698ca48ffeb8bff552f5a6fd

526b36a8a249c8c8698ca48ffeb8bff552f5a6fd is the first bad commit
commit 526b36a8a249c8c8698ca48ffeb8bff552f5a6fd
Author: rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Date:   Fri Mar 25 11:59:19 2011 +0000

    2011-03-25  Richard Guenther  <rguent...@suse.de>

        * passes.c (init_optimization_passes): Add FRE pass after
        early SRA.

        * g++.dg/tree-ssa/pr41186.C: Scan the appropriate FRE dump.
        * g++.dg/tree-ssa/pr8781.C: Likewise.
        * gcc.dg/ipa/ipa-pta-13.c: Likewise.
        * gcc.dg/ipa/ipa-pta-3.c: Likewise.
        * gcc.dg/ipa/ipa-pta-4.c: Likewise.
        * gcc.dg/tree-ssa/20041122-1.c: Likewise.
        * gcc.dg/tree-ssa/alias-18.c: Likewise.
        * gcc.dg/tree-ssa/foldstring-1.c: Likewise.
        * gcc.dg/tree-ssa/forwprop-10.c: Likewise.
        * gcc.dg/tree-ssa/forwprop-9.c: Likewise.
        * gcc.dg/tree-ssa/fre-vce-1.c: Likewise.
        * gcc.dg/tree-ssa/loadpre6.c: Likewise.
        * gcc.dg/tree-ssa/pr21574.c: Likewise.
        * gcc.dg/tree-ssa/ssa-dom-cse-1.c: Likewise.
        * gcc.dg/tree-ssa/ssa-fre-1.c: Likewise.
        * gcc.dg/tree-ssa/ssa-fre-11.c: Likewise.
        * gcc.dg/tree-ssa/ssa-fre-12.c: Likewise.
        * gcc.dg/tree-ssa/ssa-fre-13.c: Likewise.
        * gcc.dg/tree-ssa/ssa-fre-14.c: Likewise.
        * gcc.dg/tree-ssa/ssa-fre-15.c: Likewise.
        * gcc.dg/tree-ssa/ssa-fre-16.c: Likewise.
        * gcc.dg/tree-ssa/ssa-fre-17.c: Likewise.
        * gcc.dg/tree-ssa/ssa-fre-18.c: Likewise.
        * gcc.dg/tree-ssa/ssa-fre-19.c: Likewise.
        * gcc.dg/tree-ssa/ssa-fre-2.c: Likewise.
        * gcc.dg/tree-ssa/ssa-fre-21.c: Likewise.
        * gcc.dg/tree-ssa/ssa-fre-22.c: Likewise.
        * gcc.dg/tree-ssa/ssa-fre-23.c: Likewise.
        * gcc.dg/tree-ssa/ssa-fre-24.c: Likewise.
        * gcc.dg/tree-ssa/ssa-fre-25.c: Likewise.
        * gcc.dg/tree-ssa/ssa-fre-26.c: Likewise.
        * gcc.dg/tree-ssa/ssa-fre-27.c: Likewise.
        * gcc.dg/tree-ssa/ssa-fre-3.c: Likewise.
        * gcc.dg/tree-ssa/ssa-fre-4.c: Likewise.
        * gcc.dg/tree-ssa/ssa-fre-5.c: Likewise.
        * gcc.dg/tree-ssa/ssa-fre-6.c: Likewise.
        * gcc.dg/tree-ssa/ssa-fre-7.c: Likewise.
        * gcc.dg/tree-ssa/ssa-fre-8.c: Likewise.
        * gcc.dg/tree-ssa/ssa-fre-9.c: Likewise.
        * gcc.dg/tree-ssa/ssa-pre-10.c: Likewise.
        * gcc.dg/tree-ssa/ssa-pre-26.c: Likewise.
        * gcc.dg/tree-ssa/ssa-pre-7.c: Likewise.
        * gcc.dg/tree-ssa/ssa-pre-8.c: Likewise.
        * gcc.dg/tree-ssa/ssa-pre-9.c: Likewise.
        * gcc.dg/tree-ssa/ssa-sccvn-1.c: Likewise.
        * gcc.dg/tree-ssa/ssa-sccvn-2.c: Likewise.
        * gcc.dg/tree-ssa/ssa-sccvn-3.c: Likewise.
        * gcc.dg/tree-ssa/ssa-sccvn-4.c: Likewise.
        * gcc.dg/tree-ssa/struct-aliasing-1.c: Likewise.
        * gcc.dg/tree-ssa/struct-aliasing-2.c: Likewise.
        * c-c++-common/pr46562-2.c: Likewise.
        * gfortran.dg/pr42108.f90: Likewise.
        * gcc.dg/torture/pta-structcopy-1.c: Scan ealias dump, force
        foo to be inlined even at -O1.
        * gcc.dg/tree-ssa/ssa-dce-4.c: Disable FRE.
        * gcc.dg/ipa/ipa-pta-14.c: Likewise.
        * gcc.dg/tree-ssa/ssa-fre-1.c: Adjust.
        * gcc.dg/matrix/matrix.exp: Disable FRE.


    git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@171450
138bc75d-0d04-0410-961f-82ee72b054a4


Reducing the testcase does not seem to be an easy task. The smallest that I
could get is the attached 'reduced.i' file. It triggers something that looks
like a sibling '--param large-function-growth limit reached' problem:

$ gcc-4.6.4-20121016 -O1 -c reduced.i 
reduced.i: In function ‘combine_conjoint_xor_ca_float’:
reduced.i:41:50: sorry, unimplemented: inlining failed in call to
‘pd_combine_conjoint_xor’: --param large-function-growth limit reached
reduced.i:54:14: sorry, unimplemented: called from here

Reply via email to