diff options
author | Rong Xu <xur@gcc.gnu.org> | 2014-10-07 04:02:31 +0000 |
---|---|---|
committer | Rong Xu <xur@gcc.gnu.org> | 2014-10-07 04:02:31 +0000 |
commit | afe0c5ee91ab504daf13f1c07ee5559b2ba5b6e4 (patch) | |
tree | d43837c0db3f96bc2d979153fab89e2f3767ac1f /libgcc/libgcov-util.c | |
parent | c5b0abd3ef7a0d1311b63783435ddf15bbe507fa (diff) | |
download | gcc-afe0c5ee91ab504daf13f1c07ee5559b2ba5b6e4.zip gcc-afe0c5ee91ab504daf13f1c07ee5559b2ba5b6e4.tar.gz gcc-afe0c5ee91ab504daf13f1c07ee5559b2ba5b6e4.tar.bz2 |
Makefile.in: Fix dependence.
2014-10-06 Rong Xu <xur@google.com>
* gcc/Makefile.in: Fix dependence.
* gcc/gcov-counter.def (GCOV_COUNTER_ICALL_TOPNV): Add
indirect call topn profiler.
* gcc/gcov-io.h: Ditto.
* libgcc/Makefile.in: Ditto.
* libgcc/libgcov-driver.c (gcov_sort_n_vals): New utility function.
(gcov_sort_icall_topn_counter): Ditto.
(gcov_sort_topn_counter_arrays): Ditto.
(dump_one_gcov): Sort indirect_call topn counters.
* libgcc/libgcov-merge.c (__gcov_merge_icall_topn): New merge
function.
* libgcc/libgcov-profiler.c (__gcov_topn_value_profiler_body): New
utility function.
(__gcov_indirect_call_topn_profiler): New profiler function.
* libgcc/libgcov-util.c (__gcov_icall_topn_counter_op): New.
* libgcc/libgcov.h: New decls.
From-SVN: r215962
Diffstat (limited to 'libgcc/libgcov-util.c')
-rw-r--r-- | libgcc/libgcov-util.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/libgcc/libgcov-util.c b/libgcc/libgcov-util.c index e46ae06..38d434a 100644 --- a/libgcc/libgcov-util.c +++ b/libgcc/libgcov-util.c @@ -746,6 +746,25 @@ __gcov_single_counter_op (gcov_type *counters, unsigned n_counters, } } +/* Performing FN upon indirect-call profile counters. */ + +static void +__gcov_icall_topn_counter_op (gcov_type *counters, unsigned n_counters, + counter_op_fn fn, void *data1, void *data2) +{ + unsigned i; + + gcc_assert (!(n_counters % GCOV_ICALL_TOPN_NCOUNTS)); + for (i = 0; i < n_counters; i += GCOV_ICALL_TOPN_NCOUNTS) + { + unsigned j; + gcov_type *value_array = &counters[i + 1]; + + for (j = 0; j < GCOV_ICALL_TOPN_NCOUNTS - 1; j += 2) + value_array[j + 1] = fn (value_array[j + 1], data1, data2); + } +} + /* Scaling the counter value V by multiplying *(float*) DATA1. */ static gcov_type |