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

Richard Guenther <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
           Keywords|                            |missed-optimization
   Last reconfirmed|                            |2010.11.24 12:18:23
                 CC|                            |hubicka at gcc dot gnu.org
     Ever Confirmed|0                           |1
   Target Milestone|---                         |4.6.0

--- Comment #1 from Richard Guenther <rguenth at gcc dot gnu.org> 2010-11-24 
12:18:23 UTC ---
Hm, confirmed.  We don't clean up redundant conditionals before function
splitting:

  if (n_3(D) > 1023)
    goto <bb 9>;
  else
    goto <bb 3>;

  if (n_3(D) > 1023)
    goto <bb 4>;
  else
    goto <bb 7>;

and fnsplit considers splitting after the first one to be most beneficial.
And we don't inline it back together because
 Not inlining into bar:--param large-stack-frame-growth limit reached.
even though the original stack frame size is zero.

We didn't make the call in main direct either (ipa-reference runs too late
for that).

In the end this of course asks for more early optimizations.

Reply via email to