Clean up value-prof.c a bit.
authorMartin Liska <mliska@suse.cz>
Fri, 23 Aug 2019 07:48:34 +0000 (09:48 +0200)
committerMartin Liska <marxin@gcc.gnu.org>
Fri, 23 Aug 2019 07:48:34 +0000 (07:48 +0000)
2019-08-23  Martin Liska  <mliska@suse.cz>

* profile.c (instrument_values): Do not set
0 as last argument.
* tree-profile.c (gimple_gen_interval_profiler): Remove
last argument.
(gimple_gen_pow2_profiler): Likewise.
(gimple_gen_topn_values_profiler): Likewise.
(gimple_gen_ic_profiler): Likewise.
(gimple_gen_time_profiler): Likewise.
(gimple_gen_average_profiler): Likewise.
(gimple_gen_ior_profiler): Likewise.
* value-prof.c (dump_histogram_value): Use default
in switch statement instead of HIST_TYPE_MAX.
(stream_in_histogram_value): Likewise.
(gimple_duplicate_stmt_histograms): Do not
use NULL for implicitly set arguments.
(gimple_divmod_values_to_profile): Do not use
reserve+quick_push.
(gimple_indirect_call_to_profile): Likewise.
(gimple_find_values_to_profile): Use implicit
function call arguments.
* value-prof.h (gimple_alloc_histogram_value):
Set default values.
(gimple_gen_interval_profiler): Remove last argument.
(gimple_gen_pow2_profiler): Likewise.
(gimple_gen_topn_values_profiler): Likewise.
(gimple_gen_ic_profiler): Likewise.
(gimple_gen_time_profiler): Likewise.
(gimple_gen_average_profiler): Likewise.
(gimple_gen_ior_profiler): Likewise.

From-SVN: r274844

gcc/ChangeLog
gcc/profile.c
gcc/tree-profile.c
gcc/value-prof.c
gcc/value-prof.h

index 2651ce2daf07561c42514136048b36401cba41d6..8e7ab45e7615dab83db990348bf91a85bdd67ac6 100644 (file)
@@ -1,3 +1,35 @@
+2019-08-23  Martin Liska  <mliska@suse.cz>
+
+       * profile.c (instrument_values): Do not set
+       0 as last argument.
+       * tree-profile.c (gimple_gen_interval_profiler): Remove
+       last argument.
+       (gimple_gen_pow2_profiler): Likewise.
+       (gimple_gen_topn_values_profiler): Likewise.
+       (gimple_gen_ic_profiler): Likewise.
+       (gimple_gen_time_profiler): Likewise.
+       (gimple_gen_average_profiler): Likewise.
+       (gimple_gen_ior_profiler): Likewise.
+       * value-prof.c (dump_histogram_value): Use default
+       in switch statement instead of HIST_TYPE_MAX.
+       (stream_in_histogram_value): Likewise.
+       (gimple_duplicate_stmt_histograms): Do not
+       use NULL for implicitly set arguments.
+       (gimple_divmod_values_to_profile): Do not use
+       reserve+quick_push.
+       (gimple_indirect_call_to_profile): Likewise.
+       (gimple_find_values_to_profile): Use implicit
+       function call arguments.
+       * value-prof.h (gimple_alloc_histogram_value):
+       Set default values.
+       (gimple_gen_interval_profiler): Remove last argument.
+       (gimple_gen_pow2_profiler): Likewise.
+       (gimple_gen_topn_values_profiler): Likewise.
+       (gimple_gen_ic_profiler): Likewise.
+       (gimple_gen_time_profiler): Likewise.
+       (gimple_gen_average_profiler): Likewise.
+       (gimple_gen_ior_profiler): Likewise.
+
 2019-08-22  Martin Sebor  <msebor@redhat.com>
 
        PR middle-end/91490
index 6c8127ab3def4f4a87722ad662b52825585b7b6a..8d39a7d094e9ee9a16ea8a9021c07d5d21ba4fcc 100644 (file)
@@ -160,31 +160,31 @@ instrument_values (histogram_values values)
       switch (hist->type)
        {
        case HIST_TYPE_INTERVAL:
-         gimple_gen_interval_profiler (hist, t, 0);
+         gimple_gen_interval_profiler (hist, t);
          break;
 
        case HIST_TYPE_POW2:
-         gimple_gen_pow2_profiler (hist, t, 0);
+         gimple_gen_pow2_profiler (hist, t);
          break;
 
        case HIST_TYPE_TOPN_VALUES:
-         gimple_gen_topn_values_profiler (hist, t, 0);
+         gimple_gen_topn_values_profiler (hist, t);
          break;
 
        case HIST_TYPE_INDIR_CALL:
-         gimple_gen_ic_profiler (hist, t, 0);
+         gimple_gen_ic_profiler (hist, t);
          break;
 
        case HIST_TYPE_AVERAGE:
-         gimple_gen_average_profiler (hist, t, 0);
+         gimple_gen_average_profiler (hist, t);
          break;
 
        case HIST_TYPE_IOR:
-         gimple_gen_ior_profiler (hist, t, 0);
+         gimple_gen_ior_profiler (hist, t);
          break;
 
        case HIST_TYPE_TIME_PROFILE:
-         gimple_gen_time_profiler (t, 0);
+         gimple_gen_time_profiler (t);
          break;
 
        default:
index 554a8c984194233f49c27f2a804450420fe323c2..4c1ead5781fc502ef2ca2fb49e9415e548a56f4f 100644 (file)
@@ -293,11 +293,11 @@ prepare_instrumented_value (gimple_stmt_iterator *gsi, histogram_value value)
    tag of the section for counters, BASE is offset of the counter position.  */
 
 void
-gimple_gen_interval_profiler (histogram_value value, unsigned tag, unsigned base)
+gimple_gen_interval_profiler (histogram_value value, unsigned tag)
 {
   gimple *stmt = value->hvalue.stmt;
   gimple_stmt_iterator gsi = gsi_for_stmt (stmt);
-  tree ref = tree_coverage_counter_ref (tag, base), ref_ptr;
+  tree ref = tree_coverage_counter_ref (tag, 0), ref_ptr;
   gcall *call;
   tree val;
   tree start = build_int_cst_type (integer_type_node,
@@ -316,14 +316,14 @@ gimple_gen_interval_profiler (histogram_value value, unsigned tag, unsigned base
 
 /* Output instructions as GIMPLE trees to increment the power of two histogram
    counter.  VALUE is the expression whose value is profiled.  TAG is the tag
-   of the section for counters, BASE is offset of the counter position.  */
+   of the section for counters.  */
 
 void
-gimple_gen_pow2_profiler (histogram_value value, unsigned tag, unsigned base)
+gimple_gen_pow2_profiler (histogram_value value, unsigned tag)
 {
   gimple *stmt = value->hvalue.stmt;
   gimple_stmt_iterator gsi = gsi_for_stmt (stmt);
-  tree ref_ptr = tree_coverage_counter_addr (tag, base);
+  tree ref_ptr = tree_coverage_counter_addr (tag, 0);
   gcall *call;
   tree val;
 
@@ -336,15 +336,14 @@ gimple_gen_pow2_profiler (histogram_value value, unsigned tag, unsigned base)
 
 /* Output instructions as GIMPLE trees for code to find the most N common
    values.  VALUE is the expression whose value is profiled.  TAG is the tag
-   of the section for counters, BASE is offset of the counter position.  */
+   of the section for counters.  */
 
 void
-gimple_gen_topn_values_profiler (histogram_value value, unsigned tag,
-                                unsigned base)
+gimple_gen_topn_values_profiler (histogram_value value, unsigned tag)
 {
   gimple *stmt = value->hvalue.stmt;
   gimple_stmt_iterator gsi = gsi_for_stmt (stmt);
-  tree ref_ptr = tree_coverage_counter_addr (tag, base);
+  tree ref_ptr = tree_coverage_counter_addr (tag, 0);
   gcall *call;
   tree val;
 
@@ -359,17 +358,16 @@ gimple_gen_topn_values_profiler (histogram_value value, unsigned tag,
 /* Output instructions as GIMPLE trees for code to find the most
    common called function in indirect call.
    VALUE is the call expression whose indirect callee is profiled.
-   TAG is the tag of the section for counters, BASE is offset of the
-   counter position.  */
+   TAG is the tag of the section for counters.  */
 
 void
-gimple_gen_ic_profiler (histogram_value value, unsigned tag, unsigned base)
+gimple_gen_ic_profiler (histogram_value value, unsigned tag)
 {
   tree tmp1;
   gassign *stmt1, *stmt2, *stmt3;
   gimple *stmt = value->hvalue.stmt;
   gimple_stmt_iterator gsi = gsi_for_stmt (stmt);
-  tree ref_ptr = tree_coverage_counter_addr (tag, base);
+  tree ref_ptr = tree_coverage_counter_addr (tag, 0);
 
   ref_ptr = force_gimple_operand_gsi (&gsi, ref_ptr,
                                      true, NULL_TREE, true, GSI_SAME_STMT);
@@ -485,7 +483,7 @@ gimple_gen_ic_func_profiler (void)
    counter position and GSI is the iterator we place the counter.  */
 
 void
-gimple_gen_time_profiler (unsigned tag, unsigned base)
+gimple_gen_time_profiler (unsigned tag)
 {
   tree type = get_gcov_type ();
   basic_block entry = ENTRY_BLOCK_PTR_FOR_FN (cfun);
@@ -504,7 +502,7 @@ gimple_gen_time_profiler (unsigned tag, unsigned base)
   e->probability = true_edge->probability.invert ();
 
   gimple_stmt_iterator gsi = gsi_start_bb (cond_bb);
-  tree original_ref = tree_coverage_counter_ref (tag, base);
+  tree original_ref = tree_coverage_counter_ref (tag, 0);
   tree ref = force_gimple_operand_gsi (&gsi, original_ref, true, NULL_TREE,
                                       true, GSI_SAME_STMT);
   tree one = build_int_cst (type, 1);
@@ -564,11 +562,11 @@ gimple_gen_time_profiler (unsigned tag, unsigned base)
    tag of the section for counters, BASE is offset of the counter position.  */
 
 void
-gimple_gen_average_profiler (histogram_value value, unsigned tag, unsigned base)
+gimple_gen_average_profiler (histogram_value value, unsigned tag)
 {
   gimple *stmt = value->hvalue.stmt;
   gimple_stmt_iterator gsi = gsi_for_stmt (stmt);
-  tree ref_ptr = tree_coverage_counter_addr (tag, base);
+  tree ref_ptr = tree_coverage_counter_addr (tag, 0);
   gcall *call;
   tree val;
 
@@ -585,11 +583,11 @@ gimple_gen_average_profiler (histogram_value value, unsigned tag, unsigned base)
    tag of the section for counters, BASE is offset of the counter position.  */
 
 void
-gimple_gen_ior_profiler (histogram_value value, unsigned tag, unsigned base)
+gimple_gen_ior_profiler (histogram_value value, unsigned tag)
 {
   gimple *stmt = value->hvalue.stmt;
   gimple_stmt_iterator gsi = gsi_for_stmt (stmt);
-  tree ref_ptr = tree_coverage_counter_addr (tag, base);
+  tree ref_ptr = tree_coverage_counter_addr (tag, 0);
   gcall *call;
   tree val;
 
index 00ede8d985fb4ed83cb714220127ad3ba009e70e..55ea0973a038adddd1728505423d5fe3aa44d11d 100644 (file)
@@ -300,7 +300,7 @@ dump_histogram_value (FILE *dump_file, histogram_value hist)
        fprintf (dump_file, "Time profile time:%" PRId64 ".\n",
                 (int64_t) hist->hvalue.counters[0]);
       break;
-    case HIST_TYPE_MAX:
+    default:
       gcc_unreachable ();
    }
 }
@@ -360,7 +360,7 @@ stream_in_histogram_value (class lto_input_block *ib, gimple *stmt)
       bp = streamer_read_bitpack (ib);
       type = bp_unpack_enum (&bp, hist_type, HIST_TYPE_MAX);
       next = bp_unpack_value (&bp, 1);
-      new_val = gimple_alloc_histogram_value (cfun, type, stmt, NULL);
+      new_val = gimple_alloc_histogram_value (cfun, type, stmt);
       switch (type)
        {
        case HIST_TYPE_INTERVAL:
@@ -384,7 +384,7 @@ stream_in_histogram_value (class lto_input_block *ib, gimple *stmt)
          ncounters = 1;
          break;
 
-       case HIST_TYPE_MAX:
+       default:
          gcc_unreachable ();
        }
       new_val->hvalue.counters = XNEWVAR (gcov_type, sizeof (*new_val->hvalue.counters) * ncounters);
@@ -429,7 +429,7 @@ gimple_duplicate_stmt_histograms (struct function *fun, gimple *stmt,
   histogram_value val;
   for (val = gimple_histogram_value (ofun, ostmt); val != NULL; val = val->hvalue.next)
     {
-      histogram_value new_val = gimple_alloc_histogram_value (fun, val->type, NULL, NULL);
+      histogram_value new_val = gimple_alloc_histogram_value (fun, val->type);
       memcpy (new_val, val, sizeof (*val));
       new_val->hvalue.stmt = stmt;
       new_val->hvalue.counters = XNEWVAR (gcov_type, sizeof (*new_val->hvalue.counters) * new_val->n_counters);
@@ -1791,14 +1791,12 @@ gimple_divmod_values_to_profile (gimple *stmt, histogram_values *values)
       divisor = gimple_assign_rhs2 (stmt);
       op0 = gimple_assign_rhs1 (stmt);
 
-      values->reserve (3);
-
       if (TREE_CODE (divisor) == SSA_NAME)
        /* Check for the case where the divisor is the same value most
           of the time.  */
-       values->quick_push (gimple_alloc_histogram_value (cfun,
-                                                     HIST_TYPE_TOPN_VALUES,
-                                                     stmt, divisor));
+       values->safe_push (gimple_alloc_histogram_value (cfun,
+                                                        HIST_TYPE_TOPN_VALUES,
+                                                        stmt, divisor));
 
       /* For mod, check whether it is not often a noop (or replaceable by
         a few subtractions).  */
@@ -1808,16 +1806,15 @@ gimple_divmod_values_to_profile (gimple *stmt, histogram_values *values)
        {
           tree val;
           /* Check for a special case where the divisor is power of 2.  */
-         values->quick_push (gimple_alloc_histogram_value (cfun,
-                                                           HIST_TYPE_POW2,
-                                                           stmt, divisor));
-
+         values->safe_push (gimple_alloc_histogram_value (cfun,
+                                                          HIST_TYPE_POW2,
+                                                          stmt, divisor));
          val = build2 (TRUNC_DIV_EXPR, type, op0, divisor);
          hist = gimple_alloc_histogram_value (cfun, HIST_TYPE_INTERVAL,
                                               stmt, val);
          hist->hdata.intvl.int_start = 0;
          hist->hdata.intvl.steps = 2;
-         values->quick_push (hist);
+         values->safe_push (hist);
        }
       return;
 
@@ -1840,11 +1837,9 @@ gimple_indirect_call_to_profile (gimple *stmt, histogram_values *values)
     return;
 
   callee = gimple_call_fn (stmt);
-
-  values->reserve (3);
-
-  values->quick_push (gimple_alloc_histogram_value (cfun, HIST_TYPE_INDIR_CALL,
-                                                   stmt, callee));
+  histogram_value v = gimple_alloc_histogram_value (cfun, HIST_TYPE_INDIR_CALL,
+                                                   stmt, callee);
+  values->safe_push (v);
 
   return;
 }
@@ -1911,7 +1906,8 @@ gimple_find_values_to_profile (histogram_values *values)
     for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))
       gimple_values_to_profile (gsi_stmt (gsi), values);
 
-  values->safe_push (gimple_alloc_histogram_value (cfun, HIST_TYPE_TIME_PROFILE, 0, 0));
+  values->safe_push (gimple_alloc_histogram_value (cfun,
+                                                  HIST_TYPE_TIME_PROFILE));
 
   FOR_EACH_VEC_ELT (*values, i, hist)
     {
index 1078722163b81999d836bbd51a60c7fbca12d72c..77c06f60096f2f87ba5cb25be8474a5b0e4da591 100644 (file)
@@ -73,7 +73,8 @@ extern void gimple_find_values_to_profile (histogram_values *);
 extern bool gimple_value_profile_transformations (void);
 
 histogram_value gimple_alloc_histogram_value (struct function *, enum hist_type,
-                                             gimple *stmt, tree);
+                                             gimple *stmt = NULL,
+                                             tree value = NULL_TREE);
 histogram_value gimple_histogram_value (struct function *, gimple *);
 histogram_value gimple_histogram_value_of_type (struct function *, gimple *,
                                                enum hist_type);
@@ -97,15 +98,14 @@ bool get_nth_most_common_value (gimple *stmt, const char *counter_type,
 /* In tree-profile.c.  */
 extern void gimple_init_gcov_profiler (void);
 extern void gimple_gen_edge_profiler (int, edge);
-extern void gimple_gen_interval_profiler (histogram_value, unsigned, unsigned);
-extern void gimple_gen_pow2_profiler (histogram_value, unsigned, unsigned);
-extern void gimple_gen_topn_values_profiler (histogram_value, unsigned,
-                                            unsigned);
-extern void gimple_gen_ic_profiler (histogram_value, unsigned, unsigned);
+extern void gimple_gen_interval_profiler (histogram_value, unsigned);
+extern void gimple_gen_pow2_profiler (histogram_value, unsigned);
+extern void gimple_gen_topn_values_profiler (histogram_value, unsigned);
+extern void gimple_gen_ic_profiler (histogram_value, unsigned);
 extern void gimple_gen_ic_func_profiler (void);
-extern void gimple_gen_time_profiler (unsigned, unsigned);
-extern void gimple_gen_average_profiler (histogram_value, unsigned, unsigned);
-extern void gimple_gen_ior_profiler (histogram_value, unsigned, unsigned);
+extern void gimple_gen_time_profiler (unsigned);
+extern void gimple_gen_average_profiler (histogram_value, unsigned);
+extern void gimple_gen_ior_profiler (histogram_value, unsigned);
 extern void stream_out_histogram_value (struct output_block *, histogram_value);
 extern void stream_in_histogram_value (class lto_input_block *, gimple *);
 extern struct cgraph_node* find_func_by_profile_id (int func_id);