This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH, LTO, 4.6] Backport Honza's PR48246 patch


On Fri, Apr 20, 2012 at 10:15 PM, Peter Bergner <bergner@vnet.ibm.com> wrote:
> We're still hitting the overzealous assert identified in PR49246 that is
> looking for empty LTO partitions, even after the change to a checking assert.
> How about we backport Honza's mainline patch that stops the creation of empty
> partitions in the first place? ?Speaking with honza on IRC, he thought it was
> probably a good idea to backport it.
>
> I bootstrapped and regtested the backport patch below on powerpc64-linux with
> no regressions.
>
> Ok for the 4.6 branch?

Ok.

Thanks,
Richard.

> Peter
>
>
> ? ? ? ?Backport from mainline
> ? ? ? ?2011-06-11 ?Jan Hubicka ?<jh@suse.cz>
>
> ? ? ? ?PR lto/48246
> ? ? ? ?* lto.c (lto_1_to_1_map): Don't create empty partitions.
> ? ? ? ?(lto_balanced_map): Likewise.
>
> Index: gcc/lto/lto.c
> ===================================================================
> --- gcc/lto/lto.c ? ? ? (revision 186600)
> +++ gcc/lto/lto.c ? ? ? (working copy)
> @@ -893,7 +893,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;
> @@ -923,13 +924,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);
> @@ -943,8 +944,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;
> @@ -1050,8 +1050,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 -= order[i]->global.size;
>
> ? ? ? /* Once we added a new node to the partition, we also want to add
> @@ -1231,6 +1232,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 ("");
>
>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]