2014-05-20 Dehao Chen <dehao@google.com>
authordehao <dehao@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 20 May 2014 22:25:06 +0000 (22:25 +0000)
committerdehao <dehao@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 20 May 2014 22:25:06 +0000 (22:25 +0000)
* ipa-inline-transform.c (clone_inlined_nodes): Use min of edge count
and callee count to get clone count.
* tree-inline.c (expand_call_inline): Use callee count instead of bb
count in copy_body.

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

gcc/ChangeLog
gcc/ipa-inline-transform.c
gcc/tree-inline.c

index 1fad15b..0b1900e 100644 (file)
@@ -1,3 +1,10 @@
+2014-05-20  Dehao Chen  <dehao@google.com>
+
+       * ipa-inline-transform.c (clone_inlined_nodes): Use min of edge count
+       and callee count to get clone count.
+       * tree-inline.c (expand_call_inline): Use callee count instead of bb
+       count in copy_body.
+
 2014-05-20  Richard Sandiford  <rdsandiford@googlemail.com>
 
        PR rtl-optimization/61243
index a45aab1..7cd3ff7 100644 (file)
@@ -183,8 +183,9 @@ clone_inlined_nodes (struct cgraph_edge *e, bool duplicate,
          if (freq_scale == -1)
            freq_scale = e->frequency;
          n = cgraph_clone_node (e->callee, e->callee->decl,
-                                e->count, freq_scale, update_original,
-                                vNULL, true, inlining_into, NULL);
+                                MIN (e->count, e->callee->count), freq_scale,
+                                update_original, vNULL, true, inlining_into,
+                                NULL);
          cgraph_redirect_edge_callee (e, n);
        }
     }
index bc2b271..3208c74 100644 (file)
@@ -4355,7 +4355,7 @@ expand_call_inline (basic_block bb, gimple stmt, copy_body_data *id)
      function in any way before this point, as this CALL_EXPR may be
      a self-referential call; if we're calling ourselves, we need to
      duplicate our body before altering anything.  */
-  copy_body (id, bb->count,
+  copy_body (id, cg_edge->callee->count,
             GCOV_COMPUTE_SCALE (cg_edge->frequency, CGRAPH_FREQ_BASE),
             bb, return_block, NULL);