Commit ab168044 by Jan Hubicka Committed by Jan Hubicka

re PR lto/85583 (lto1: internal compiler error: in lto_balanced_map, at lto/lto-partition.c:833)


	PR lto/85583
	* lto-partition.c (account_reference_p): Do not account
	references from aliases; do not account refernces from
	external initializers.

From-SVN: r260266
parent 5f150326
2018-05-18 Jan Hubicka <jh@suse.cz>
PR lto/85583
* lto-partition.c (account_reference_p): Do not account
references from aliases; do not account refernces from
external initializers.
2018-04-30 Jan Hubicka <jh@suse.cz>
* lto.c (cmp_partitions_size): Remove.
......
......@@ -439,12 +439,27 @@ account_reference_p (symtab_node *n1, symtab_node *n2)
{
if (cgraph_node *cnode = dyn_cast <cgraph_node *> (n1))
n1 = cnode;
/* Do not account references from aliases - they are never split across
partitions. */
if (n1->alias)
return false;
/* Do not account recursion - the code below will handle it incorrectly
otherwise. Also do not account references to external symbols.
They will never become local. */
otherwise. Do not account references to external symbols: they will
never become local. Finally do not account references to duplicated
symbols: they will be always local. */
if (n1 == n2
|| DECL_EXTERNAL (n2->decl)
|| !n2->definition)
|| !n2->definition
|| n2->get_partitioning_class () != SYMBOL_PARTITION)
return false;
/* If referring node is external symbol do not account it to boundary
cost. Those are added into units only to enable possible constant
folding and devirtulization.
Here we do not know if it will ever be added to some partition
(this is decided by compute_ltrans_boundary) and second it is not
that likely that constant folding will actually use the reference. */
if (contained_in_symbol (n1)
->get_partitioning_class () == SYMBOL_EXTERNAL)
return false;
return true;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment