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
This commit is contained in:
Martin Liska 2018-01-12 15:45:35 +01:00 committed by Martin Liska
parent b27b31dc2d
commit 00e4d22dc1
3 changed files with 20 additions and 11 deletions

View File

@ -1,3 +1,10 @@
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

View File

@ -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

View File

@ -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 ();