re PR lto/48246 (ICE in lto_wpa_write_files)
authorJan Hubicka <jh@suse.cz>
Sat, 18 Jun 2011 10:48:08 +0000 (12:48 +0200)
committerJan Hubicka <hubicka@gcc.gnu.org>
Sat, 18 Jun 2011 10:48:08 +0000 (10:48 +0000)
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
gcc/lto/lto.c

index 9956d791ce3ee302c8353d892b9addcdddad33ef..ee054b00ea17672dc5b576a9777a0feb04c6cedb 100644 (file)
@@ -1,3 +1,9 @@
+2011-06-11  Jan Hubicka  <jh@suse.cz>
+
+       PR lto/23754
+       * lto.c (lto_1_to_1_map): Don't create empty partitions.
+       (lto_balanced_map): Likewise.
+
 2011-06-11  Jan Hubicka  <jh@suse.cz>
 
        * lto.c (add_cgraph_node_to_partition_1): Break out from ...
index f13ee0e03f259538e86317016c4cb66e6ac8cea8..4323c4fa6f4ff38d31e538cc91f9f75f3d92e5a2 100644 (file)
@@ -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 ("");