diff options
author | Martin Liska <mliska@suse.cz> | 2019-07-03 14:42:23 +0200 |
---|---|---|
committer | Martin Liska <marxin@gcc.gnu.org> | 2019-07-03 12:42:23 +0000 |
commit | 596341c741a4a746497a1da8322fce0ad625e26b (patch) | |
tree | 2161db916022c10dfedcbf3106d2e14523a81620 /libgcc | |
parent | 1b309ca5edddd6bf8051993876df5f123394bc79 (diff) | |
download | gcc-596341c741a4a746497a1da8322fce0ad625e26b.zip gcc-596341c741a4a746497a1da8322fce0ad625e26b.tar.gz gcc-596341c741a4a746497a1da8322fce0ad625e26b.tar.bz2 |
Rename SINGE_VALUE to TOPN_VALUES counters.
2019-07-03 Martin Liska <mliska@suse.cz>
* gcov-counter.def (GCOV_COUNTER_V_SINGLE): Remove.
(GCOV_COUNTER_V_TOPN): New.
(GCOV_COUNTER_V_INDIR): Use _topn.
* gcov-io.h (GCOV_DISK_SINGLE_VALUES): Remove.
(GCOV_TOPN_VALUES): New.
(GCOV_SINGLE_VALUE_COUNTERS): Remove.
(GCOV_TOPN_VALUES_COUNTERS): New.
* profile.c (instrument_values): Use HIST_TYPE_TOPN_VALUES.
* tree-profile.c:
(gimple_init_gcov_profiler): Rename variables from one_value
to topn_values.
(gimple_gen_one_value_profiler): Remove.
(gimple_gen_topn_values_profiler): New function.
* value-prof.c (dump_histogram_value): Use TOPN_VALUES
names instead of SINGLE_VALUE.
(stream_out_histogram_value): Likewise.
(stream_in_histogram_value): Likewise.
(get_most_common_single_value): Likewise.
(gimple_divmod_fixed_value_transform): Likewise.
(gimple_stringops_transform): Likewise.
(gimple_divmod_values_to_profile): Likewise.
(gimple_stringops_values_to_profile): Likewise.
(gimple_find_values_to_profile): Likewise.
* value-prof.h (enum hist_type): Rename to TOPN.
(gimple_gen_one_value_profiler): Remove.
(gimple_gen_topn_values_profiler): New.
2019-07-03 Martin Liska <mliska@suse.cz>
* Makefile.in: Use topn_values instead of one_value names.
* libgcov-merge.c (__gcov_merge_single): Move to ...
(__gcov_merge_topn): ... this.
(merge_single_value_set): Move to ...
(merge_topn_values_set): ... this.
* libgcov-profiler.c (__gcov_one_value_profiler_body): Move to
...
(__gcov_topn_values_profiler_body): ... this.
(__gcov_one_value_profiler_v2): Move to ...
(__gcov_topn_values_profiler): ... this.
(__gcov_one_value_profiler_v2_atomic): Move to ...
(__gcov_topn_values_profiler_atomic): ... this.
(__gcov_indirect_call_profiler_v4): Remove.
* libgcov-util.c (__gcov_single_counter_op): Move to ...
(__gcov_topn_counter_op): ... this.
* libgcov.h (L_gcov_merge_single): Remove.
(L_gcov_merge_topn): New.
(__gcov_merge_single): Remove.
(__gcov_merge_topn): New.
(__gcov_one_value_profiler_v2): Move to ..
(__gcov_topn_values_profiler): ... this.
(__gcov_one_value_profiler_v2_atomic): Move to ...
(__gcov_topn_values_profiler_atomic): ... this.
From-SVN: r273005
Diffstat (limited to 'libgcc')
-rw-r--r-- | libgcc/ChangeLog | 26 | ||||
-rw-r--r-- | libgcc/Makefile.in | 6 | ||||
-rw-r--r-- | libgcc/libgcov-merge.c | 30 | ||||
-rw-r--r-- | libgcc/libgcov-profiler.c | 30 | ||||
-rw-r--r-- | libgcc/libgcov-util.c | 6 | ||||
-rw-r--r-- | libgcc/libgcov.h | 10 |
6 files changed, 64 insertions, 44 deletions
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog index 90183dc..d4cbee0 100644 --- a/libgcc/ChangeLog +++ b/libgcc/ChangeLog @@ -1,5 +1,31 @@ 2019-07-03 Martin Liska <mliska@suse.cz> + * Makefile.in: Use topn_values instead of one_value names. + * libgcov-merge.c (__gcov_merge_single): Move to ... + (__gcov_merge_topn): ... this. + (merge_single_value_set): Move to ... + (merge_topn_values_set): ... this. + * libgcov-profiler.c (__gcov_one_value_profiler_body): Move to + ... + (__gcov_topn_values_profiler_body): ... this. + (__gcov_one_value_profiler_v2): Move to ... + (__gcov_topn_values_profiler): ... this. + (__gcov_one_value_profiler_v2_atomic): Move to ... + (__gcov_topn_values_profiler_atomic): ... this. + (__gcov_indirect_call_profiler_v4): Remove. + * libgcov-util.c (__gcov_single_counter_op): Move to ... + (__gcov_topn_counter_op): ... this. + * libgcov.h (L_gcov_merge_single): Remove. + (L_gcov_merge_topn): New. + (__gcov_merge_single): Remove. + (__gcov_merge_topn): New. + (__gcov_one_value_profiler_v2): Move to .. + (__gcov_topn_values_profiler): ... this. + (__gcov_one_value_profiler_v2_atomic): Move to ... + (__gcov_topn_values_profiler_atomic): ... this. + +2019-07-03 Martin Liska <mliska@suse.cz> + * libgcov-merge.c (merge_single_value_set): Support N values. * libgcov-profiler.c (__gcov_one_value_profiler_body): Likewise. diff --git a/libgcc/Makefile.in b/libgcc/Makefile.in index e10a197..5608352 100644 --- a/libgcc/Makefile.in +++ b/libgcc/Makefile.in @@ -889,14 +889,14 @@ include $(iterator) # Build libgcov components. -LIBGCOV_MERGE = _gcov_merge_add _gcov_merge_single \ +LIBGCOV_MERGE = _gcov_merge_add _gcov_merge_topn \ _gcov_merge_ior _gcov_merge_time_profile LIBGCOV_PROFILER = _gcov_interval_profiler \ _gcov_interval_profiler_atomic \ _gcov_pow2_profiler \ _gcov_pow2_profiler_atomic \ - _gcov_one_value_profiler_v2 \ - _gcov_one_value_profiler_v2_atomic \ + _gcov_topn_values_profiler \ + _gcov_topn_values_profiler_atomic \ _gcov_average_profiler \ _gcov_average_profiler_atomic \ _gcov_ior_profiler \ diff --git a/libgcc/libgcov-merge.c b/libgcc/libgcov-merge.c index 8436700..15f27ae 100644 --- a/libgcc/libgcov-merge.c +++ b/libgcc/libgcov-merge.c @@ -33,9 +33,9 @@ void __gcov_merge_add (gcov_type *counters __attribute__ ((unused)), unsigned n_counters __attribute__ ((unused))) {} #endif -#ifdef L_gcov_merge_single -void __gcov_merge_single (gcov_type *counters __attribute__ ((unused)), - unsigned n_counters __attribute__ ((unused))) {} +#ifdef L_gcov_merge_topn +void __gcov_merge_topn (gcov_type *counters __attribute__ ((unused)), + unsigned n_counters __attribute__ ((unused))) {} #endif #else @@ -84,10 +84,10 @@ __gcov_merge_time_profile (gcov_type *counters, unsigned n_counters) } #endif /* L_gcov_merge_time_profile */ -#ifdef L_gcov_merge_single +#ifdef L_gcov_merge_topn static void -merge_single_value_set (gcov_type *counters) +merge_topn_values_set (gcov_type *counters) { /* First value is number of total executions of the profiler. */ gcov_type all = gcov_get_counter_ignore_scaling (-1); @@ -95,9 +95,9 @@ merge_single_value_set (gcov_type *counters) ++counters; /* Read all part values. */ - gcov_type read_counters[2 * GCOV_DISK_SINGLE_VALUES]; + gcov_type read_counters[2 * GCOV_TOPN_VALUES]; - for (unsigned i = 0; i < GCOV_DISK_SINGLE_VALUES; i++) + for (unsigned i = 0; i < GCOV_TOPN_VALUES; i++) { read_counters[2 * i] = gcov_get_counter_target (); read_counters[2 * i + 1] = gcov_get_counter_ignore_scaling (-1); @@ -109,13 +109,13 @@ merge_single_value_set (gcov_type *counters) return; } - for (unsigned i = 0; i < GCOV_DISK_SINGLE_VALUES; i++) + for (unsigned i = 0; i < GCOV_TOPN_VALUES; i++) { if (read_counters[2 * i + 1] == 0) return; unsigned j; - for (j = 0; j < GCOV_DISK_SINGLE_VALUES; j++) + for (j = 0; j < GCOV_TOPN_VALUES; j++) { if (counters[2 * j] == read_counters[2 * i]) { @@ -131,7 +131,7 @@ merge_single_value_set (gcov_type *counters) } /* We haven't found a slot, bail out. */ - if (j == GCOV_DISK_SINGLE_VALUES) + if (j == GCOV_TOPN_VALUES) { counters[1] = -1; return; @@ -149,13 +149,13 @@ merge_single_value_set (gcov_type *counters) -- counter */ void -__gcov_merge_single (gcov_type *counters, unsigned n_counters) +__gcov_merge_topn (gcov_type *counters, unsigned n_counters) { - gcc_assert (!(n_counters % GCOV_SINGLE_VALUE_COUNTERS)); + gcc_assert (!(n_counters % GCOV_TOPN_VALUES_COUNTERS)); - for (unsigned i = 0; i < (n_counters / GCOV_SINGLE_VALUE_COUNTERS); i++) - merge_single_value_set (counters + (i * GCOV_SINGLE_VALUE_COUNTERS)); + for (unsigned i = 0; i < (n_counters / GCOV_TOPN_VALUES_COUNTERS); i++) + merge_topn_values_set (counters + (i * GCOV_TOPN_VALUES_COUNTERS)); } -#endif /* L_gcov_merge_single */ +#endif /* L_gcov_merge_topn */ #endif /* inhibit_libc */ diff --git a/libgcc/libgcov-profiler.c b/libgcc/libgcov-profiler.c index 04d6f9c..8f877a9 100644 --- a/libgcc/libgcov-profiler.c +++ b/libgcc/libgcov-profiler.c @@ -106,17 +106,11 @@ __gcov_pow2_profiler_atomic (gcov_type *counters, gcov_type value) #endif -/* Tries to determine the most common value among its inputs. Checks if the - value stored in COUNTERS[0] matches VALUE. If this is the case, COUNTERS[1] - is incremented. If this is not the case and COUNTERS[1] is not zero, - COUNTERS[1] is decremented. Otherwise COUNTERS[1] is set to one and - VALUE is stored to COUNTERS[0]. This algorithm guarantees that if this - function is called more than 50% of the time with one value, this value - will be in COUNTERS[0] in the end. */ +/* Tries to determine N most commons value among its inputs. */ static inline void -__gcov_one_value_profiler_body (gcov_type *counters, gcov_type value, - int use_atomic) +__gcov_topn_values_profiler_body (gcov_type *counters, gcov_type value, + int use_atomic) { if (use_atomic) __atomic_fetch_add (&counters[0], 1, __ATOMIC_RELAXED); @@ -125,11 +119,11 @@ __gcov_one_value_profiler_body (gcov_type *counters, gcov_type value, ++counters; - /* We have GCOV_DISK_SINGLE_VALUES as we can keep multiple values + /* We have GCOV_TOPN_VALUES as we can keep multiple values next to each other. */ unsigned sindex = 0; - for (unsigned i = 0; i < GCOV_DISK_SINGLE_VALUES; i++) + for (unsigned i = 0; i < GCOV_TOPN_VALUES; i++) { if (value == counters[2 * i]) { @@ -158,15 +152,15 @@ __gcov_one_value_profiler_body (gcov_type *counters, gcov_type value, counters[2 * sindex + 1]--; } -#ifdef L_gcov_one_value_profiler_v2 +#ifdef L_gcov_topn_values_profiler void -__gcov_one_value_profiler_v2 (gcov_type *counters, gcov_type value) +__gcov_topn_values_profiler (gcov_type *counters, gcov_type value) { - __gcov_one_value_profiler_body (counters, value, 0); + __gcov_topn_values_profiler_body (counters, value, 0); } #endif -#if defined(L_gcov_one_value_profiler_v2_atomic) && GCOV_SUPPORTS_ATOMIC +#if defined(L_gcov_topn_values_profiler_atomic) && GCOV_SUPPORTS_ATOMIC /* Update one value profilers (COUNTERS) for a given VALUE. @@ -178,9 +172,9 @@ __gcov_one_value_profiler_v2 (gcov_type *counters, gcov_type value) https://gcc.gnu.org/ml/gcc-patches/2016-08/msg00024.html. */ void -__gcov_one_value_profiler_v2_atomic (gcov_type *counters, gcov_type value) +__gcov_topn_values_profiler_atomic (gcov_type *counters, gcov_type value) { - __gcov_one_value_profiler_body (counters, value, 1); + __gcov_topn_values_profiler_body (counters, value, 1); } #endif @@ -214,7 +208,7 @@ __gcov_indirect_call_profiler_v4 (gcov_type value, void* cur_func) if (cur_func == __gcov_indirect_call.callee || (__LIBGCC_VTABLE_USES_DESCRIPTORS__ && *(void **) cur_func == *(void **) __gcov_indirect_call.callee)) - __gcov_one_value_profiler_body (__gcov_indirect_call.counters, value, 0); + __gcov_topn_values_profiler_body (__gcov_indirect_call.counters, value, 0); __gcov_indirect_call.callee = NULL; } diff --git a/libgcc/libgcov-util.c b/libgcc/libgcov-util.c index 94d4575..32b3f82 100644 --- a/libgcc/libgcov-util.c +++ b/libgcc/libgcov-util.c @@ -725,11 +725,11 @@ __gcov_time_profile_counter_op (gcov_type *counters ATTRIBUTE_UNUSED, /* Do nothing. */ } -/* Performing FN upon single counters. */ +/* Performing FN upon TOP N counters. */ static void -__gcov_single_counter_op (gcov_type *counters, unsigned n_counters, - counter_op_fn fn, void *data1, void *data2) +__gcov_topn_counter_op (gcov_type *counters, unsigned n_counters, + counter_op_fn fn, void *data1, void *data2) { unsigned i, n_measures; diff --git a/libgcc/libgcov.h b/libgcc/libgcov.h index 7f31614..30a8a11 100644 --- a/libgcc/libgcov.h +++ b/libgcc/libgcov.h @@ -126,7 +126,7 @@ typedef unsigned gcov_position_t; #define L_gcov 1 #define L_gcov_merge_add 1 -#define L_gcov_merge_single 1 +#define L_gcov_merge_topn 1 #define L_gcov_merge_ior 1 #define L_gcov_merge_time_profile 1 @@ -259,8 +259,8 @@ extern void __gcov_merge_add (gcov_type *, unsigned) ATTRIBUTE_HIDDEN; /* The merge function to select the minimum valid counter value. */ extern void __gcov_merge_time_profile (gcov_type *, unsigned) ATTRIBUTE_HIDDEN; -/* The merge function to choose the most common value. */ -extern void __gcov_merge_single (gcov_type *, unsigned) ATTRIBUTE_HIDDEN; +/* The merge function to choose the most common N values. */ +extern void __gcov_merge_topn (gcov_type *, unsigned) ATTRIBUTE_HIDDEN; /* The merge function that just ors the counters together. */ extern void __gcov_merge_ior (gcov_type *, unsigned) ATTRIBUTE_HIDDEN; @@ -271,8 +271,8 @@ extern void __gcov_interval_profiler_atomic (gcov_type *, gcov_type, int, unsigned); extern void __gcov_pow2_profiler (gcov_type *, gcov_type); extern void __gcov_pow2_profiler_atomic (gcov_type *, gcov_type); -extern void __gcov_one_value_profiler_v2 (gcov_type *, gcov_type); -extern void __gcov_one_value_profiler_v2_atomic (gcov_type *, gcov_type); +extern void __gcov_topn_values_profiler (gcov_type *, gcov_type); +extern void __gcov_topn_values_profiler_atomic (gcov_type *, gcov_type); extern void __gcov_indirect_call_profiler_v4 (gcov_type, void *); extern void __gcov_time_profiler (gcov_type *); extern void __gcov_time_profiler_atomic (gcov_type *); |