diff options
author | Martin Liska <mliska@suse.cz> | 2020-01-31 13:10:14 +0100 |
---|---|---|
committer | Giuliano Belinassi <giuliano.belinassi@usp.br> | 2020-08-17 13:09:43 -0300 |
commit | fa2a18ee4ca39931554a23020d4919038a2b744b (patch) | |
tree | 13ef3919fbe52badaf6d74216f14c09f42f4405e /gcc/coverage.c | |
parent | 25093c16e27be52e52a1e8c387334ece0cd14b4a (diff) |
Make TOPN counter dynamically allocated.
gcc/ChangeLog:
* coverage.c (get_coverage_counts): Skip sanity check for TOP N counters
as they have variable number of counters.
* gcov-dump.c (main): Add new option -r.
(print_usage): Likewise.
(tag_counters): All new raw format.
* gcov-io.h (struct gcov_kvp): New.
(GCOV_TOPN_VALUES): Remove.
(GCOV_TOPN_VALUES_COUNTERS): Likewise.
(GCOV_TOPN_MEM_COUNTERS): New.
(GCOV_TOPN_DISK_COUNTERS): Likewise.
(GCOV_TOPN_MAXIMUM_TRACKED_VALUES): Likewise.
* ipa-profile.c (ipa_profile_generate_summary): Use
GCOV_TOPN_MAXIMUM_TRACKED_VALUES.
(ipa_profile_write_edge_summary): Likewise.
(ipa_profile_read_edge_summary): Likewise.
(ipa_profile): Remove usage of GCOV_TOPN_VALUES.
* profile.c (sort_hist_values): Sort variable number
of counters.
(compute_value_histograms): Special case for TOP N counters
that have dynamic number of key-value pairs.
* value-prof.c (dump_histogram_value): Dump variable number
of key-value pairs.
(stream_in_histogram_value): Stream in variable number
of key-value pairs for TOP N counter.
(get_nth_most_common_value): Deal with variable number
of key-value pairs.
(dump_ic_profile): Use GCOV_TOPN_MAXIMUM_TRACKED_VALUES
for loop iteration.
(gimple_find_values_to_profile): Set GCOV_TOPN_MEM_COUNTERS
to n_counters.
* doc/gcov-dump.texi: Document new -r option.
libgcc/ChangeLog:
* libgcov-driver.c (prune_topn_counter): Remove.
(prune_counters): Likewise.
(merge_one_data): Special case TOP N counters
as they have variable length.
(write_top_counters): New.
(write_one_data): Special case TOP N.
(dump_one_gcov): Do not prune TOP N counters.
* libgcov-merge.c (merge_topn_values_set): Remove.
(__gcov_merge_topn): Use gcov_topn_add_value.
* libgcov-profiler.c (__gcov_topn_values_profiler_body):
Likewise here.
* libgcov.h (gcov_counter_add): New.
(gcov_counter_set_if_null): Likewise.
(gcov_topn_add_value): New.
Diffstat (limited to 'gcc/coverage.c')
-rw-r--r-- | gcc/coverage.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/coverage.c b/gcc/coverage.c index 7d82e44c152..1dcda4353cd 100644 --- a/gcc/coverage.c +++ b/gcc/coverage.c @@ -345,8 +345,11 @@ get_coverage_counts (unsigned counter, unsigned cfg_checksum, can do about it. */ return NULL; } - - if (entry->cfg_checksum != cfg_checksum || entry->n_counts != n_counts) + + if (entry->cfg_checksum != cfg_checksum + || (counter != GCOV_COUNTER_V_INDIR + && counter != GCOV_COUNTER_V_TOPN + && entry->n_counts != n_counts)) { static int warned = 0; bool warning_printed = false; |