From 7496868da66ab8447dc5d7d173f1d6fb6453a860 Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Sat, 18 Jun 2011 12:48:08 +0200 Subject: [PATCH] re PR lto/48246 (ICE in lto_wpa_write_files) PR lto/23754 * lto.c (lto_1_to_1_map): Don't create empty partitions. (lto_balanced_map): Likewise. From-SVN: r175174 --- gcc/lto/ChangeLog | 6 ++++++ gcc/lto/lto.c | 19 +++++++++++-------- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/gcc/lto/ChangeLog b/gcc/lto/ChangeLog index 9956d791ce3..ee054b00ea1 100644 --- a/gcc/lto/ChangeLog +++ b/gcc/lto/ChangeLog @@ -1,3 +1,9 @@ +2011-06-11 Jan Hubicka + + PR lto/23754 + * lto.c (lto_1_to_1_map): Don't create empty partitions. + (lto_balanced_map): Likewise. + 2011-06-11 Jan Hubicka * lto.c (add_cgraph_node_to_partition_1): Break out from ... diff --git a/gcc/lto/lto.c b/gcc/lto/lto.c index f13ee0e03f2..4323c4fa6f4 100644 --- a/gcc/lto/lto.c +++ b/gcc/lto/lto.c @@ -1516,7 +1516,8 @@ lto_1_to_1_map (void) for (node = cgraph_nodes; node; node = node->next) { - if (!partition_cgraph_node_p (node)) + if (!partition_cgraph_node_p (node) + || node->aux) continue; file_data = node->local.lto_file_data; @@ -1545,13 +1546,13 @@ lto_1_to_1_map (void) npartitions++; } - if (!node->aux) - add_cgraph_node_to_partition (partition, node); + add_cgraph_node_to_partition (partition, node); } for (vnode = varpool_nodes; vnode; vnode = vnode->next) { - if (!partition_varpool_node_p (vnode)) + if (!partition_varpool_node_p (vnode) + || vnode->aux) continue; file_data = vnode->lto_file_data; slot = pointer_map_contains (pmap, file_data); @@ -1565,8 +1566,7 @@ lto_1_to_1_map (void) npartitions++; } - if (!vnode->aux) - add_varpool_node_to_partition (partition, vnode); + add_varpool_node_to_partition (partition, vnode); } for (node = cgraph_nodes; node; node = node->next) node->aux = NULL; @@ -1675,8 +1675,9 @@ lto_balanced_map (void) for (i = 0; i < n_nodes; i++) { - if (!order[i]->aux) - add_cgraph_node_to_partition (partition, order[i]); + if (order[i]->aux) + continue; + add_cgraph_node_to_partition (partition, order[i]); total_size -= inline_summary (order[i])->size; /* Once we added a new node to the partition, we also want to add @@ -1856,6 +1857,8 @@ lto_balanced_map (void) } i = best_i; /* When we are finished, avoid creating empty partition. */ + while (i < n_nodes - 1 && order[i + 1]->aux) + i++; if (i == n_nodes - 1) break; partition = new_partition (""); -- 2.30.2