aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree.c
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2018-01-12 15:45:35 +0100
committerMartin Liska <marxin@gcc.gnu.org>2018-01-12 14:45:35 +0000
commit00e4d22dc1e8224e090be6dac970fe583e8f39ac (patch)
tree9db60d2f28b5c758fb23d06837456a895c9a71cb /gcc/tree.c
parentb27b31dc2d160453e7b05168f1dd195e73cb176b (diff)
downloadgcc-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
Diffstat (limited to 'gcc/tree.c')
-rw-r--r--gcc/tree.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/gcc/tree.c b/gcc/tree.c
index 722ce02..c008a55 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -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 ();