Re: [PATCH] LTO balanced map: add stats about insns and symbols.

2015-05-27 Thread Richard Biener
On Tue, May 26, 2015 at 4:13 PM, Martin Liška mli...@suse.cz wrote:
 Hello.

 Following patch enhanced dump output for LTO balanced map.
 Sample output:

 Partition sizes:
 partition 0 contains 2413 (13.33%) symbols and 56646 (3.62%) insns
 partition 1 contains 2006 (11.08%) symbols and 55901 (3.57%) insns
 partition 2 contains 1954 (10.79%) symbols and 61054 (3.90%) insns
 partition 3 contains 1234 (6.82%) symbols and 61331 (3.92%) insns
 partition 4 contains 2024 (11.18%) symbols and 60955 (3.89%) insns
 partition 5 contains 2332 (12.88%) symbols and 61030 (3.90%) insns
 partition 6 contains 2294 (12.67%) symbols and 60585 (3.87%) insns
 partition 7 contains 1044 (5.77%) symbols and 56854 (3.63%) insns
 partition 8 contains 1390 (7.68%) symbols and 60877 (3.89%) insns
 partition 9 contains 1891 (10.44%) symbols and 56356 (3.60%) insns
 partition 10 contains 1172 (6.47%) symbols and 56990 (3.64%) insns
 partition 11 contains 2099 (11.59%) symbols and 57168 (3.65%) insns
 partition 12 contains 2444 (13.50%) symbols and 60830 (3.88%) insns
 partition 13 contains 1610 (8.89%) symbols and 51294 (3.28%) insns
 partition 14 contains 1949 (10.76%) symbols and 61142 (3.90%) insns
 partition 15 contains 2256 (12.46%) symbols and 60634 (3.87%) insns
 partition 16 contains 2951 (16.30%) symbols and 61536 (3.93%) insns
 partition 17 contains 1968 (10.87%) symbols and 62862 (4.01%) insns
 partition 18 contains 2298 (12.69%) symbols and 62748 (4.01%) insns
 partition 19 contains 1679 (9.27%) symbols and 61772 (3.94%) insns
 partition 20 contains 2265 (12.51%) symbols and 61851 (3.95%) insns
 partition 21 contains 2234 (12.34%) symbols and 62310 (3.98%) insns
 partition 22 contains 2345 (12.95%) symbols and 62185 (3.97%) insns
 partition 23 contains 1816 (10.03%) symbols and 60530 (3.87%) insns
 partition 24 contains 2655 (14.66%) symbols and 63232 (4.04%) insns
 partition 25 contains 1782 (9.84%) symbols and 45523 (2.91%) insns
 partition 26 contains 2217 (12.25%) symbols and 67405 (4.30%) insns
 partition 27 contains 2642 (14.59%) symbols and 66556 (4.25%) insns
 partition 28 contains 2454 (13.55%) symbols and 66748 (4.26%) insns
 partition 29 contains 2637 (14.57%) symbols and 66711 (4.26%) insns
 partition 30 contains 2244 (12.39%) symbols and 51957 (3.32%) insns

 Patch can bootstrap on x86_64-linux-gnu and can build Firefox and Inkscape
 with LTO enabled.

 Ready for trunk?

Ok.

Richard.

 Thanks,
 Martin


[PATCH] LTO balanced map: add stats about insns and symbols.

2015-05-26 Thread Martin Liška

Hello.

Following patch enhanced dump output for LTO balanced map.
Sample output:

Partition sizes:
partition 0 contains 2413 (13.33%) symbols and 56646 (3.62%) insns
partition 1 contains 2006 (11.08%) symbols and 55901 (3.57%) insns
partition 2 contains 1954 (10.79%) symbols and 61054 (3.90%) insns
partition 3 contains 1234 (6.82%) symbols and 61331 (3.92%) insns
partition 4 contains 2024 (11.18%) symbols and 60955 (3.89%) insns
partition 5 contains 2332 (12.88%) symbols and 61030 (3.90%) insns
partition 6 contains 2294 (12.67%) symbols and 60585 (3.87%) insns
partition 7 contains 1044 (5.77%) symbols and 56854 (3.63%) insns
partition 8 contains 1390 (7.68%) symbols and 60877 (3.89%) insns
partition 9 contains 1891 (10.44%) symbols and 56356 (3.60%) insns
partition 10 contains 1172 (6.47%) symbols and 56990 (3.64%) insns
partition 11 contains 2099 (11.59%) symbols and 57168 (3.65%) insns
partition 12 contains 2444 (13.50%) symbols and 60830 (3.88%) insns
partition 13 contains 1610 (8.89%) symbols and 51294 (3.28%) insns
partition 14 contains 1949 (10.76%) symbols and 61142 (3.90%) insns
partition 15 contains 2256 (12.46%) symbols and 60634 (3.87%) insns
partition 16 contains 2951 (16.30%) symbols and 61536 (3.93%) insns
partition 17 contains 1968 (10.87%) symbols and 62862 (4.01%) insns
partition 18 contains 2298 (12.69%) symbols and 62748 (4.01%) insns
partition 19 contains 1679 (9.27%) symbols and 61772 (3.94%) insns
partition 20 contains 2265 (12.51%) symbols and 61851 (3.95%) insns
partition 21 contains 2234 (12.34%) symbols and 62310 (3.98%) insns
partition 22 contains 2345 (12.95%) symbols and 62185 (3.97%) insns
partition 23 contains 1816 (10.03%) symbols and 60530 (3.87%) insns
partition 24 contains 2655 (14.66%) symbols and 63232 (4.04%) insns
partition 25 contains 1782 (9.84%) symbols and 45523 (2.91%) insns
partition 26 contains 2217 (12.25%) symbols and 67405 (4.30%) insns
partition 27 contains 2642 (14.59%) symbols and 66556 (4.25%) insns
partition 28 contains 2454 (13.55%) symbols and 66748 (4.26%) insns
partition 29 contains 2637 (14.57%) symbols and 66711 (4.26%) insns
partition 30 contains 2244 (12.39%) symbols and 51957 (3.32%) insns

Patch can bootstrap on x86_64-linux-gnu and can build Firefox and Inkscape
with LTO enabled.

Ready for trunk?
Thanks,
Martin
From 43570a062df7edd02a8936d99ca7790eb20fd84f Mon Sep 17 00:00:00 2001
From: mliska mli...@suse.cz
Date: Tue, 26 May 2015 15:04:20 +0200
Subject: [PATCH] LTO balanced map: add stats about insns and symbols.

gcc/lto/ChangeLog:

2015-05-26  Martin Liska  mli...@suse.cz

	* lto-partition.c (new_partition): Reset number of symbols.
	(add_symbol_to_partition_1): Increment number of symbols.
	(undo_partition): Decrement number of symbols.
	(lto_balanced_map): Dump number of symbols and insns that
	belong to a partition.
	* lto-partition.h (struct ltrans_partition_def): Add symbol counter.
---
 gcc/lto/lto-partition.c | 25 -
 gcc/lto/lto-partition.h |  1 +
 2 files changed, 25 insertions(+), 1 deletion(-)

diff --git a/gcc/lto/lto-partition.c b/gcc/lto/lto-partition.c
index 235b735..8c72d9e 100644
--- a/gcc/lto/lto-partition.c
+++ b/gcc/lto/lto-partition.c
@@ -73,6 +73,7 @@ new_partition (const char *name)
   part-encoder = lto_symtab_encoder_new (false);
   part-name = name;
   part-insns = 0;
+  part-symbols = 0;
   ltrans_partitions.safe_push (part);
   return part;
 }
@@ -157,6 +158,8 @@ add_symbol_to_partition_1 (ltrans_partition part, symtab_node *node)
   gcc_assert (c != SYMBOL_EXTERNAL
 	   (c == SYMBOL_DUPLICATE || !symbol_partitioned_p (node)));
 
+  part-symbols++;
+
   lto_set_symtab_encoder_in_partition (part-encoder, node);
 
   if (symbol_partitioned_p (node))
@@ -274,6 +277,7 @@ undo_partition (ltrans_partition partition, unsigned int n_nodes)
 {
   symtab_node *node = lto_symtab_encoder_deref (partition-encoder,
 		   n_nodes);
+  partition-symbols--;
   cgraph_node *cnode;
 
   /* After UNDO we no longer know what was visited.  */
@@ -462,7 +466,7 @@ lto_balanced_map (int n_lto_partitions)
   auto_vecvarpool_node * varpool_order;
   int i;
   struct cgraph_node *node;
-  int total_size = 0, best_total_size = 0;
+  int original_total_size, total_size = 0, best_total_size = 0;
   int partition_size;
   ltrans_partition partition;
   int last_visited_node = 0;
@@ -488,6 +492,8 @@ lto_balanced_map (int n_lto_partitions)
 	  total_size += inline_summaries-get (node)-size;
   }
 
+  original_total_size = total_size;
+
   /* Streaming works best when the source units do not cross partition
  boundaries much.  This is because importing function from a source
  unit tends to import a lot of global trees defined there.  We should
@@ -782,6 +788,23 @@ lto_balanced_map (int n_lto_partitions)
   add_sorted_nodes (next_nodes, partition);
 
   free (order);
+
+  if (symtab-dump_file)
+{
+  fprintf (symtab-dump_file, \nPartition sizes:\n);
+  unsigned