Commit 21cd8589 by Jan Hubicka Committed by Jan Hubicka

Clear calls_comdat_local when comdat group is dissolved

while looking into Firefox inlining dumps I noticed that we often do not
inline because we think function calls comdat local while the comdat group
itself has been dissolved.

	* cgraph.c (cgraph_node::verify_node): Check that calls_comdat_local
	is set only for symbol in comdat group.
	* symtab.c (symtab_node::dissolve_same_comdat_group_1): Clear it.

From-SVN: r278944
parent 4f75f97b
2019-12-03 Jan Hubicka <hubicka@ucw.cz>
* cgraph.c (cgraph_node::verify_node): Check that calls_comdat_local
is set only for symbol in comdat group.
* symtab.c (symtab_node::dissolve_same_comdat_group_1): Clear it.
2019-12-03 Jan Hubicka <hubicka@ucw.cz>
* cgraph.c: Include tree-into-ssa.h
(cgraph_node::get_body): Call update_ssa.
* cgraphunit.c (cgraph_node::expand): Likewise.
......@@ -3094,6 +3094,11 @@ cgraph_node::verify_node (void)
error ("inline clone is forced to output");
error_found = true;
}
if (calls_comdat_local && !same_comdat_group)
{
error ("calls_comdat_local is set outside of a comdat group");
error_found = true;
}
for (e = indirect_calls; e; e = e->next_callee)
{
if (e->aux)
......
......@@ -489,6 +489,8 @@ symtab_node::dissolve_same_comdat_group_list (void)
{
next = n->same_comdat_group;
n->same_comdat_group = NULL;
if (dyn_cast <cgraph_node *> (n))
dyn_cast <cgraph_node *> (n)->calls_comdat_local = false;
/* Clear comdat_group for comdat locals, since
make_decl_local doesn't. */
if (!TREE_PUBLIC (n->decl))
......
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