[gcc r10-6023] Fix noreorder symbol partitioning reversion.

Martin Liska marxin@gcc.gnu.org
Thu Jan 16 19:45:00 GMT 2020


https://gcc.gnu.org/g:f48c6014133c8989702458f9082e34ba6dd326d4

commit r10-6023-gf48c6014133c8989702458f9082e34ba6dd326d4
Author: Martin Liska <mliska@suse.cz>
Date:   Thu Jan 16 20:44:27 2020 +0100

    Fix noreorder symbol partitioning reversion.
    
    	* lto-partition.c (lto_balanced_map): Remember
    	best_noreorder_pos and then restore to it
    	when we revert.

Diff:
---
 gcc/lto/ChangeLog       | 6 ++++++
 gcc/lto/lto-partition.c | 3 +++
 2 files changed, 9 insertions(+)

diff --git a/gcc/lto/ChangeLog b/gcc/lto/ChangeLog
index 821a6fa..2b930cb 100644
--- a/gcc/lto/ChangeLog
+++ b/gcc/lto/ChangeLog
@@ -1,3 +1,9 @@
+2020-01-16  Martin Liska  <mliska@suse.cz>
+
+	* lto-partition.c (lto_balanced_map): Remember
+	best_noreorder_pos and then restore to it
+	when we revert.
+
 2020-01-08  Martin Liska  <mliska@suse.cz>
 
 	* lto-partition.c (add_symbol_to_partition_1): Use ::dump_name or
diff --git a/gcc/lto/lto-partition.c b/gcc/lto/lto-partition.c
index 3a99909..8e0488a 100644
--- a/gcc/lto/lto-partition.c
+++ b/gcc/lto/lto-partition.c
@@ -471,6 +471,7 @@ void
 lto_balanced_map (int n_lto_partitions, int max_partition_size)
 {
   int n_varpool_nodes = 0, varpool_pos = 0, best_varpool_pos = 0;
+  int best_noreorder_pos = 0;
   auto_vec <cgraph_node *> order (symtab->cgraph_count);
   auto_vec<cgraph_node *> noreorder;
   auto_vec<varpool_node *> varpool_order;
@@ -732,6 +733,7 @@ lto_balanced_map (int n_lto_partitions, int max_partition_size)
 	  best_i = i;
 	  best_n_nodes = lto_symtab_encoder_size (partition->encoder);
 	  best_varpool_pos = varpool_pos;
+	  best_noreorder_pos = noreorder_pos;
 	}
       if (dump_file)
 	fprintf (dump_file, "Step %i: added %s, size %i, "
@@ -752,6 +754,7 @@ lto_balanced_map (int n_lto_partitions, int max_partition_size)
 			 i - best_i, best_i);
 	      undo_partition (partition, best_n_nodes);
 	      varpool_pos = best_varpool_pos;
+	      noreorder_pos = best_noreorder_pos;
 	    }
 	  gcc_assert (best_size == partition->insns);
 	  i = best_i;



More information about the Gcc-cvs mailing list