aboutsummaryrefslogtreecommitdiff
path: root/libgcc/libgcov-driver.c
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2020-06-08 20:07:08 +0200
committerMartin Liska <mliska@suse.cz>2020-06-09 13:07:41 +0200
commit862b9b225fba6cf3c63234206f2dbc47f1ab5350 (patch)
tree132a4505a1eab6d808754c7156b80ffdd4ee10d2 /libgcc/libgcov-driver.c
parent009668e31f4ee910eae874b24afb8eb6adf65fae (diff)
downloadgcc-862b9b225fba6cf3c63234206f2dbc47f1ab5350.zip
gcc-862b9b225fba6cf3c63234206f2dbc47f1ab5350.tar.gz
gcc-862b9b225fba6cf3c63234206f2dbc47f1ab5350.tar.bz2
libgcov: fix TOPN type casting
The patch fixes tree-prof.exp tests on solaris11 and i686-linux-gnu, problem was that sizeof of a pointer is different from sizeof gcov_type. I'm going to install it if there are no objections. Thanks, Martin libgcc/ChangeLog: PR gcov-profile/95494 * libgcov-driver.c (write_top_counters): Cast first to intptr_t as sizeof(*) != sizeof(gcov_type). * libgcov.h (gcov_counter_set_if_null): Remove. (gcov_topn_add_value): Cast first to intptr_t and update linked list directly.
Diffstat (limited to 'libgcc/libgcov-driver.c')
-rw-r--r--libgcc/libgcov-driver.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/libgcc/libgcov-driver.c b/libgcc/libgcov-driver.c
index 8348d9f..cbfcae9 100644
--- a/libgcc/libgcov-driver.c
+++ b/libgcc/libgcov-driver.c
@@ -352,8 +352,8 @@ write_top_counters (const struct gcov_ctr_info *ci_ptr,
gcov_type pair_count = ci_ptr->values[GCOV_TOPN_MEM_COUNTERS * i + 1];
gcov_write_counter (ci_ptr->values[GCOV_TOPN_MEM_COUNTERS * i]);
gcov_write_counter (pair_count);
- for (struct gcov_kvp *node
- = (struct gcov_kvp *)ci_ptr->values[GCOV_TOPN_MEM_COUNTERS * i + 2];
+ gcov_type start = ci_ptr->values[GCOV_TOPN_MEM_COUNTERS * i + 2];
+ for (struct gcov_kvp *node = (struct gcov_kvp *)(intptr_t)start;
node != NULL; node = node->next)
{
gcov_write_counter (node->value);