diff options
author | Martin Liska <mliska@suse.cz> | 2018-01-12 15:45:35 +0100 |
---|---|---|
committer | Martin Liska <marxin@gcc.gnu.org> | 2018-01-12 14:45:35 +0000 |
commit | 00e4d22dc1e8224e090be6dac970fe583e8f39ac (patch) | |
tree | 9db60d2f28b5c758fb23d06837456a895c9a71cb | |
parent | b27b31dc2d160453e7b05168f1dd195e73cb176b (diff) | |
download | gcc-00e4d22dc1e8224e090be6dac970fe583e8f39ac.zip gcc-00e4d22dc1e8224e090be6dac970fe583e8f39ac.tar.gz gcc-00e4d22dc1e8224e090be6dac970fe583e8f39ac.tar.bz2 |
Fix integer overflow in stats of trees.
2018-01-12 Martin Liska <mliska@suse.cz>
* tree-core.h: Use uint64_t instead of int.
* tree.c (tree_node_counts): Likewise.
(tree_node_sizes): Likewise.
(dump_tree_statistics): Use PRIu64 in printf format.
From-SVN: r256583
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/tree-core.h | 4 | ||||
-rw-r--r-- | gcc/tree.c | 20 |
3 files changed, 20 insertions, 11 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 88417f7..730e8ed 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,12 @@ 2018-01-12 Martin Liska <mliska@suse.cz> + * tree-core.h: Use uint64_t instead of int. + * tree.c (tree_node_counts): Likewise. + (tree_node_sizes): Likewise. + (dump_tree_statistics): Use PRIu64 in printf format. + +2018-01-12 Martin Liska <mliska@suse.cz> + * Makefile.in: As qsort_chk is implemented in vec.c, add vec.o to linkage of gencfn-macros. * tree.c (build_new_poly_int_cst): Add CXX_MEM_STAT_INFO as it's diff --git a/gcc/tree-core.h b/gcc/tree-core.h index 56acd10..478c631 100644 --- a/gcc/tree-core.h +++ b/gcc/tree-core.h @@ -2123,8 +2123,8 @@ extern GTY(()) tree integer_types[itk_none]; extern GTY(()) tree sizetype_tab[(int) stk_type_kind_last]; /* Arrays for keeping track of tree node statistics. */ -extern int tree_node_counts[]; -extern int tree_node_sizes[]; +extern uint64_t tree_node_counts[]; +extern uint64_t tree_node_sizes[]; /* True if we are in gimple form and the actions of the folders need to be restricted. False if we are not in gimple form and folding is not @@ -129,9 +129,9 @@ extern int _obstack_allocated_p (struct obstack *h, void *obj); /* Statistics-gathering stuff. */ -static int tree_code_counts[MAX_TREE_CODES]; -int tree_node_counts[(int) all_kinds]; -int tree_node_sizes[(int) all_kinds]; +static uint64_t tree_code_counts[MAX_TREE_CODES]; +uint64_t tree_node_counts[(int) all_kinds]; +uint64_t tree_node_sizes[(int) all_kinds]; /* Keep in sync with tree.h:enum tree_node_kind. */ static const char * const tree_node_kind_names[] = { @@ -9123,25 +9123,27 @@ dump_tree_statistics (void) if (GATHER_STATISTICS) { int i; - int total_nodes, total_bytes; + uint64_t total_nodes, total_bytes; fprintf (stderr, "\nKind Nodes Bytes\n"); mem_usage::print_dash_line (TREE_MEM_USAGE_SPACES); total_nodes = total_bytes = 0; for (i = 0; i < (int) all_kinds; i++) { - fprintf (stderr, "%-20s %7d %10d\n", tree_node_kind_names[i], - tree_node_counts[i], tree_node_sizes[i]); + fprintf (stderr, "%-20s %7" PRIu64 " %10" PRIu64 "\n", + tree_node_kind_names[i], tree_node_counts[i], + tree_node_sizes[i]); total_nodes += tree_node_counts[i]; total_bytes += tree_node_sizes[i]; } mem_usage::print_dash_line (TREE_MEM_USAGE_SPACES); - fprintf (stderr, "%-20s %7d %10d\n", "Total", total_nodes, total_bytes); + fprintf (stderr, "%-20s %7" PRIu64 " %10" PRIu64 "\n", "Total", + total_nodes, total_bytes); mem_usage::print_dash_line (TREE_MEM_USAGE_SPACES); fprintf (stderr, "Code Nodes\n"); mem_usage::print_dash_line (TREE_MEM_USAGE_SPACES); for (i = 0; i < (int) MAX_TREE_CODES; i++) - fprintf (stderr, "%-32s %7d\n", get_tree_code_name ((enum tree_code) i), - tree_code_counts[i]); + fprintf (stderr, "%-32s %7" PRIu64 "\n", + get_tree_code_name ((enum tree_code) i), tree_code_counts[i]); mem_usage::print_dash_line (TREE_MEM_USAGE_SPACES); fprintf (stderr, "\n"); ssanames_print_statistics (); |