Commit 00e4d22d by Martin Liska Committed by Martin Liska

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
parent b27b31dc
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
......
......@@ -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 ();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment