diff options
author | Martin Liska <mliska@suse.cz> | 2018-11-05 14:36:29 +0100 |
---|---|---|
committer | Martin Liska <marxin@gcc.gnu.org> | 2018-11-05 13:36:29 +0000 |
commit | 40ce7fa6dd38f8ac26d576c84f5dbe4362aa902b (patch) | |
tree | 94fa1f477283ce96ec503e9878181a2db6833334 /gcc/rtl.c | |
parent | 00e6775a5faa43702e96e315e7a1c22297983f2a (diff) | |
download | gcc-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/rtl.c')
-rw-r--r-- | gcc/rtl.c | 66 |
1 files changed, 45 insertions, 21 deletions
@@ -148,10 +148,10 @@ const char * const reg_note_name[REG_NOTE_MAX] = #undef DEF_REG_NOTE }; -static int rtx_alloc_counts[(int) LAST_AND_UNUSED_RTX_CODE]; -static int rtx_alloc_sizes[(int) LAST_AND_UNUSED_RTX_CODE]; -static int rtvec_alloc_counts; -static int rtvec_alloc_sizes; +static size_t rtx_alloc_counts[(int) LAST_AND_UNUSED_RTX_CODE]; +static size_t rtx_alloc_sizes[(int) LAST_AND_UNUSED_RTX_CODE]; +static size_t rtvec_alloc_counts; +static size_t rtvec_alloc_sizes; /* Allocate an rtx vector of N elements. @@ -785,10 +785,20 @@ classify_insn (rtx x) return INSN; } +/* Comparator of indices based on rtx_alloc_counts. */ + +static int +rtx_count_cmp (const void *p1, const void *p2) +{ + const unsigned *n1 = (const unsigned *)p1; + const unsigned *n2 = (const unsigned *)p2; + + return rtx_alloc_counts[*n1] - rtx_alloc_counts[*n2]; +} + void dump_rtx_statistics (void) { - int i; int total_counts = 0; int total_sizes = 0; @@ -798,27 +808,41 @@ dump_rtx_statistics (void) return; } - fprintf (stderr, "\nRTX Kind Count Bytes\n"); - fprintf (stderr, "---------------------------------------\n"); - for (i = 0; i < LAST_AND_UNUSED_RTX_CODE; i++) - if (rtx_alloc_counts[i]) - { - fprintf (stderr, "%-20s %7d %10d\n", GET_RTX_NAME (i), - rtx_alloc_counts[i], rtx_alloc_sizes[i]); - total_counts += rtx_alloc_counts[i]; - total_sizes += rtx_alloc_sizes[i]; - } + fprintf (stderr, "\nRTX Kind Count Bytes\n"); + fprintf (stderr, "-------------------------------------------\n"); + + auto_vec<unsigned> indices (LAST_AND_UNUSED_RTX_CODE); + for (unsigned i = 0; i < LAST_AND_UNUSED_RTX_CODE; i++) + indices.quick_push (i); + indices.qsort (rtx_count_cmp); + + for (unsigned i = 0; i < LAST_AND_UNUSED_RTX_CODE; i++) + { + unsigned j = indices[i]; + if (rtx_alloc_counts[j]) + { + fprintf (stderr, "%-24s %6zu%c %9zu%c\n", + GET_RTX_NAME (j), + SIZE_AMOUNT (rtx_alloc_counts[j]), + SIZE_AMOUNT (rtx_alloc_sizes[j])); + total_counts += rtx_alloc_counts[j]; + total_sizes += rtx_alloc_sizes[j]; + } + } + if (rtvec_alloc_counts) { - fprintf (stderr, "%-20s %7d %10d\n", "rtvec", - rtvec_alloc_counts, rtvec_alloc_sizes); + fprintf (stderr, "%-24s %6zu%c %9zu%c\n", "rtvec", + SIZE_AMOUNT (rtvec_alloc_counts), + SIZE_AMOUNT (rtvec_alloc_sizes)); total_counts += rtvec_alloc_counts; total_sizes += rtvec_alloc_sizes; } - fprintf (stderr, "---------------------------------------\n"); - fprintf (stderr, "%-20s %7d %10d\n", - "Total", total_counts, total_sizes); - fprintf (stderr, "---------------------------------------\n"); + fprintf (stderr, "-----------------------------------------------\n"); + fprintf (stderr, "%-24s %6d%c %9d%c\n", + "Total", SIZE_AMOUNT (total_counts), + SIZE_AMOUNT (total_sizes)); + fprintf (stderr, "-----------------------------------------------\n"); } #if defined ENABLE_RTL_CHECKING && (GCC_VERSION >= 2007) |