Index: ipa-inline.c
===================================================================
--- ipa-inline.c	(revision 267612)
+++ ipa-inline.c	(working copy)
@@ -1082,8 +1082,8 @@ edge_badness (struct cgraph_edge *edge,
   /* When profile is available. Compute badness as:
      
                  time_saved * caller_count
-     goodness =  -------------------------------------------------
-	         growth_of_caller * overall_growth * combined_size
+     goodness =  --------------------------------
+	         growth_of_caller * combined_size
 
      badness = - goodness
 
@@ -1094,7 +1094,6 @@ edge_badness (struct cgraph_edge *edge,
 	   || caller->count.ipa ().nonzero_p ())
     {
       sreal numerator, denominator;
-      int overall_growth;
       sreal inlined_time = compute_inlined_call_time (edge, edge_time);
 
       numerator = (compute_uninlined_call_time (edge, unspec_edge_time)
@@ -1106,73 +1105,6 @@ edge_badness (struct cgraph_edge *edge,
       else if (caller->count.ipa ().initialized_p ())
 	numerator = numerator >> 11;
       denominator = growth;
-
-      overall_growth = callee_info->growth;
-
-      /* Look for inliner wrappers of the form:
-
-	 inline_caller ()
-	   {
-	     do_fast_job...
-	     if (need_more_work)
-	       noninline_callee ();
-	   }
-	 Withhout panilizing this case, we usually inline noninline_callee
-	 into the inline_caller because overall_growth is small preventing
-	 further inlining of inline_caller.
-
-	 Penalize only callgraph edges to functions with small overall
-	 growth ...
-	*/
-      if (growth > overall_growth
-	  /* ... and having only one caller which is not inlined ... */
-	  && callee_info->single_caller
-	  && !edge->caller->global.inlined_to
-	  /* ... and edges executed only conditionally ... */
-	  && edge->sreal_frequency () < 1
-	  /* ... consider case where callee is not inline but caller is ... */
-	  && ((!DECL_DECLARED_INLINE_P (edge->callee->decl)
-	       && DECL_DECLARED_INLINE_P (caller->decl))
-	      /* ... or when early optimizers decided to split and edge
-		 frequency still indicates splitting is a win ... */
-	      || (callee->split_part && !caller->split_part
-		  && edge->sreal_frequency () * 100
-		     < PARAM_VALUE
-			  (PARAM_PARTIAL_INLINING_ENTRY_PROBABILITY)
-		  /* ... and do not overwrite user specified hints.   */
-		  && (!DECL_DECLARED_INLINE_P (edge->callee->decl)
-		      || DECL_DECLARED_INLINE_P (caller->decl)))))
-	{
-	  ipa_fn_summary *caller_info = ipa_fn_summaries->get (caller);
-	  int caller_growth = caller_info->growth;
-
-	  /* Only apply the penalty when caller looks like inline candidate,
-	     and it is not called once and.  */
-	  if (!caller_info->single_caller && overall_growth < caller_growth
-	      && caller_info->inlinable
-	      && caller_info->size
-		 < (DECL_DECLARED_INLINE_P (caller->decl)
-		    ? MAX_INLINE_INSNS_SINGLE : MAX_INLINE_INSNS_AUTO))
-	    {
-	      if (dump)
-		fprintf (dump_file,
-			 "     Wrapper penalty. Increasing growth %i to %i\n",
-			 overall_growth, caller_growth);
-	      overall_growth = caller_growth;
-	    }
-	}
-      if (overall_growth > 0)
-        {
-	  /* Strongly preffer functions with few callers that can be inlined
-	     fully.  The square root here leads to smaller binaries at average.
-	     Watch however for extreme cases and return to linear function
-	     when growth is large.  */
-	  if (overall_growth < 256)
-	    overall_growth *= overall_growth;
-	  else
-	    overall_growth += 256 * 256 - 256;
-	  denominator *= overall_growth;
-        }
       denominator *= ipa_fn_summaries->get (caller)->self_size + growth;
 
       badness = - numerator / denominator;
@@ -1182,18 +1114,14 @@ edge_badness (struct cgraph_edge *edge,
 	  fprintf (dump_file,
 		   "      %f: guessed profile. frequency %f, count %" PRId64
 		   " caller count %" PRId64
-		   " time w/o inlining %f, time with inlining %f"
-		   " overall growth %i (current) %i (original)"
-		   " %i (compensated)\n",
+		   " time w/o inlining %f, time with inlining %f\n",
 		   badness.to_double (),
 		   edge->sreal_frequency ().to_double (),
 		   edge->count.ipa ().initialized_p () ? edge->count.ipa ().to_gcov_type () : -1,
 		   caller->count.ipa ().initialized_p () ? caller->count.ipa ().to_gcov_type () : -1,
 		   compute_uninlined_call_time (edge,
 						unspec_edge_time).to_double (),
-		   inlined_time.to_double (),
-		   estimate_growth (callee),
-		   callee_info->growth, overall_growth);
+		   inlined_time.to_double ());
 	}
     }
   /* When function local profile is not available or it does not give
