aboutsummaryrefslogtreecommitdiff
path: root/gcc/ggc-common.c
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2018-11-05 14:36:29 +0100
committerMartin Liska <marxin@gcc.gnu.org>2018-11-05 13:36:29 +0000
commit40ce7fa6dd38f8ac26d576c84f5dbe4362aa902b (patch)
tree94fa1f477283ce96ec503e9878181a2db6833334 /gcc/ggc-common.c
parent00e6775a5faa43702e96e315e7a1c22297983f2a (diff)
downloadgcc-40ce7fa6dd38f8ac26d576c84f5dbe4362aa902b.zip
gcc-40ce7fa6dd38f8ac26d576c84f5dbe4362aa902b.tar.gz
gcc-40ce7fa6dd38f8ac26d576c84f5dbe4362aa902b.tar.bz2
Come up with SIZE_AMOUNT and use it in memory statistics and sort stats.
2018-11-05 Martin Liska <mliska@suse.cz> * alloc-pool.h (struct pool_usage): Use SIZE_AMOUNT. * bitmap.h (struct bitmap_usage): Likewise. * ggc-common.c (SCALE): Remove. (LABEL): Likewise. (struct ggc_usage): Use SIZE_AMOUNT. And update compare method. * ggc-page.c (SCALE): Remove. (STAT_LABEL): Remove. (ggc_print_statistics): Use SIZE_AMOUNT. * gimple.h (SCALE): Remove. (LABEL): Likewise. * input.c (ONE_K): Remove. (ONE_M): Likewise. (SCALE): Likewise. (STAT_LABEL): Likewise. (FORMAT_AMOUNT): Likewise. (dump_line_table_statistics): Use SIZE_AMOUNT. * mem-stats.h (struct mem_usage): Likewise. * rtl.c (dump_rtx_statistics): Likewise. (rtx_alloc_counts): Change type to size_t. (rtx_alloc_sizes): Likewise. (rtx_count_cmp): New. (dump_rtx_statistics): Sort first based on counts. * tree.c (tree_nodes_cmp): New. (tree_codes_cmp): New. (dump_tree_statistics): Sort first based on counts. * system.h (ONE_K): New. (ONE_M): Likewise. (SIZE_SCALE): Likewise. (SIZE_LABEL): Likewise. (SIZE_AMOUNT): Likewise. * tree-cfg.c (dump_cfg_stats): Use SIZE_AMOUNT. * tree-dfa.c (dump_dfa_stats): Likewise. * tree-phinodes.c (phinodes_print_statistics): Likewise. * tree-ssanames.c (ssanames_print_statistics): Likewise. * tree.c (dump_tree_statistics): Likewise. * vec.c (struct vec_usage): Likewise. * trans-mem.c (tm_mangle): Enlarge buffer in order to not trigger a -Werror=format-overflow with --enable-gather-detailed-stats. From-SVN: r265800
Diffstat (limited to 'gcc/ggc-common.c')
-rw-r--r--gcc/ggc-common.c32
1 files changed, 11 insertions, 21 deletions
diff --git a/gcc/ggc-common.c b/gcc/ggc-common.c
index f83fc13..9fdba23 100644
--- a/gcc/ggc-common.c
+++ b/gcc/ggc-common.c
@@ -195,14 +195,6 @@ ggc_splay_dont_free (void * x ATTRIBUTE_UNUSED, void *nl)
gcc_assert (!nl);
}
-/* Print statistics that are independent of the collector in use. */
-#define SCALE(x) ((unsigned long) ((x) < 1024*10 \
- ? (x) \
- : ((x) < 1024*1024*10 \
- ? (x) / 1024 \
- : (x) / (1024*1024))))
-#define LABEL(x) ((x) < 1024*10 ? ' ' : ((x) < 1024*1024*10 ? 'k' : 'M'))
-
void
ggc_print_common_statistics (FILE *stream ATTRIBUTE_UNUSED,
ggc_statistics *stats)
@@ -890,16 +882,17 @@ struct ggc_usage: public mem_usage
inline void
dump (const char *prefix, ggc_usage &total) const
{
- long balance = get_balance ();
+ size_t balance = get_balance ();
fprintf (stderr,
- "%-48s %10li:%5.1f%%%10li:%5.1f%%"
- "%10li:%5.1f%%%10li:%5.1f%%%10li\n",
- prefix, (long)m_collected,
+ "%-48s %9zu%c:%5.1f%%%9zu%c:%5.1f%%"
+ "%9zu%c:%5.1f%%%9zu%c:%5.1f%%%9zu%c\n",
+ prefix, SIZE_AMOUNT (m_collected),
get_percent (m_collected, total.m_collected),
- (long)m_freed, get_percent (m_freed, total.m_freed),
- (long)balance, get_percent (balance, total.get_balance ()),
- (long)m_overhead, get_percent (m_overhead, total.m_overhead),
- (long)m_times);
+ SIZE_AMOUNT (m_freed), get_percent (m_freed, total.m_freed),
+ SIZE_AMOUNT (balance), get_percent (balance, total.get_balance ()),
+ SIZE_AMOUNT (m_overhead),
+ get_percent (m_overhead, total.m_overhead),
+ SIZE_AMOUNT (m_times));
}
/* Dump usage coupled to LOC location, where TOTAL is sum of all rows. */
@@ -923,7 +916,7 @@ struct ggc_usage: public mem_usage
}
/* Get balance which is GGC allocation leak. */
- inline long
+ inline size_t
get_balance () const
{
return m_allocated + m_overhead - m_collected - m_freed;
@@ -938,10 +931,7 @@ struct ggc_usage: public mem_usage
const mem_pair_t f = *(const mem_pair_t *)first;
const mem_pair_t s = *(const mem_pair_t *)second;
- if (*f.second == *s.second)
- return 0;
-
- return *f.second < *s.second ? 1 : -1;
+ return s.second->get_balance () - f.second->get_balance ();
}
/* Compare rows in final GGC summary dump. */