aboutsummaryrefslogtreecommitdiff
path: root/libgcc
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2019-07-03 14:42:23 +0200
committerMartin Liska <marxin@gcc.gnu.org>2019-07-03 12:42:23 +0000
commit596341c741a4a746497a1da8322fce0ad625e26b (patch)
tree2161db916022c10dfedcbf3106d2e14523a81620 /libgcc
parent1b309ca5edddd6bf8051993876df5f123394bc79 (diff)
downloadgcc-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/ChangeLog26
-rw-r--r--libgcc/Makefile.in6
-rw-r--r--libgcc/libgcov-merge.c30
-rw-r--r--libgcc/libgcov-profiler.c30
-rw-r--r--libgcc/libgcov-util.c6
-rw-r--r--libgcc/libgcov.h10
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 *);