This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Fix yet another partitioning bug
- From: Jan Hubicka <hubicka at ucw dot cz>
- To: gcc-patches at gcc dot gnu dot org
- Date: Thu, 18 Jul 2013 01:47:49 +0200
- Subject: Fix yet another partitioning bug
Hi,
Martin's local patch triggered latent bug in lto-partition.c where we forget to revert
back to old varpool_pos when we undo some partitioning decisions.
Will commit it after testing on x86_64-linux.
Honza
* lto-partition.c (lto_balanced_map): Fix -fno-toplevel-reorder
partitioning of variables.
Index: lto-partition.c
===================================================================
--- lto-partition.c (revision 200893)
+++ lto-partition.c (working copy)
@@ -444,7 +444,7 @@
lto_balanced_map (void)
{
int n_nodes = 0;
- int n_varpool_nodes = 0, varpool_pos = 0;
+ int n_varpool_nodes = 0, varpool_pos = 0, best_varpool_pos = 0;
struct cgraph_node **postorder =
XCNEWVEC (struct cgraph_node *, cgraph_n_nodes);
struct cgraph_node **order = XNEWVEC (struct cgraph_node *, cgraph_max_uid);
@@ -684,6 +684,7 @@
best_i = i;
best_n_nodes = lto_symtab_encoder_size (partition->encoder);
best_total_size = total_size;
+ best_varpool_pos = varpool_pos;
}
if (cgraph_dump_file)
fprintf (cgraph_dump_file, "Step %i: added %s/%i, size %i, cost %i/%i "
@@ -701,6 +702,7 @@
fprintf (cgraph_dump_file, "Unwinding %i insertions to step %i\n",
i - best_i, best_i);
undo_partition (partition, best_n_nodes);
+ varpool_pos = best_varpool_pos;
}
i = best_i;
/* When we are finished, avoid creating empty partition. */