tree.c (tree_code_counts): New global array.
authorRichard Guenther <rguenther@suse.de>
Mon, 2 May 2011 11:12:26 +0000 (11:12 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Mon, 2 May 2011 11:12:26 +0000 (11:12 +0000)
2011-05-02  Richard Guenther  <rguenther@suse.de>

* tree.c (tree_code_counts): New global array.
(record_node_allocation_statistics): Count individual tree codes.
(dump_tree_statistics): Dump individual code stats.

From-SVN: r173244

gcc/ChangeLog
gcc/tree.c

index ffdef91664d61430f163236992874281039a465f..5a89d63da78e108316ed0673f416b73346ea64ef 100644 (file)
@@ -1,3 +1,9 @@
+2011-05-02  Richard Guenther  <rguenther@suse.de>
+
+       * tree.c (tree_code_counts): New global array.
+       (record_node_allocation_statistics): Count individual tree codes.
+       (dump_tree_statistics): Dump individual code stats.
+
 2011-05-01  Jan Hubicka  <jh@suse.cz>
 
        * ipa-inline.c (caller_growth_limits): Fix thinko when
index ba90df8d3188a1e0995efe8d15674d282ee5d89b..522bab1e334ab47303799fbeb175a22defa7998f 100644 (file)
@@ -124,6 +124,7 @@ extern int _obstack_allocated_p (struct obstack *h, void *obj);
 #ifdef GATHER_STATISTICS
 /* 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];
 
@@ -809,6 +810,7 @@ record_node_allocation_statistics (enum tree_code code ATTRIBUTE_UNUSED,
       gcc_unreachable ();
     }
 
+  tree_code_counts[(int) code]++;
   tree_node_counts[(int) kind]++;
   tree_node_sizes[(int) kind] += length;
 #endif
@@ -6188,6 +6190,7 @@ type_hash_canon (unsigned int hashcode, tree type)
   if (t1 != 0)
     {
 #ifdef GATHER_STATISTICS
+      tree_code_counts[(int) TREE_CODE (type)]--;
       tree_node_counts[(int) t_kind]--;
       tree_node_sizes[(int) t_kind] -= sizeof (struct tree_type);
 #endif
@@ -8497,6 +8500,11 @@ dump_tree_statistics (void)
   fprintf (stderr, "---------------------------------------\n");
   fprintf (stderr, "%-20s %7d %10d\n", "Total", total_nodes, total_bytes);
   fprintf (stderr, "---------------------------------------\n");
+  fprintf (stderr, "Code                   Nodes\n");
+  fprintf (stderr, "----------------------------\n");
+  for (i = 0; i < (int) MAX_TREE_CODES; i++)
+    fprintf (stderr, "%-20s %7d\n", tree_code_name[i], tree_code_counts[i]);
+  fprintf (stderr, "----------------------------\n");
   ssanames_print_statistics ();
   phinodes_print_statistics ();
 #else