Index: ipa-inline.c
===================================================================
--- ipa-inline.c	(revision 193505)
+++ ipa-inline.c	(working copy)
@@ -850,9 +850,11 @@ edge_badness (struct cgraph_edge *edge,
 
   if (dump)
     {
-      fprintf (dump_file, "    Badness calculation for %s -> %s\n",
+      fprintf (dump_file, "    Badness calculation for %s/%i -> %s/%i\n",
 	       xstrdup (cgraph_node_name (edge->caller)),
-	       xstrdup (cgraph_node_name (callee)));
+	       edge->caller->uid,
+	       xstrdup (cgraph_node_name (callee)),
+	       edge->callee->uid);
       fprintf (dump_file, "      size growth %i, time %i ",
 	       growth,
 	       edge_time);
@@ -917,7 +919,7 @@ edge_badness (struct cgraph_edge *edge,
     {
       badness = (relative_time_benefit (callee_info, edge, edge_time)
 		 * (INT_MIN / 16 / RELATIVE_TIME_BENEFIT_RANGE));
-      badness /= (growth * MAX (1, callee_info->growth));
+      badness /= (MIN (65536/2, growth) * MIN (65536/2, MAX (1, callee_info->growth)));
       gcc_checking_assert (badness <=0 && badness >= INT_MIN / 16);
       if ((hints & (INLINE_HINT_indirect_call
 		    | INLINE_HINT_loop_iterations
