Commit 8ee05051 by Jan Hubicka Committed by Jan Hubicka

lto-partition.c (privatize_symbol_name): Return true when privatizing happened.

	* lto-partition.c (privatize_symbol_name): Return true when
	privatizing happened.
	(rename_statics): Do not go into infinite loop when privatizing
	is not needed.

From-SVN: r199040
parent c3272a92
2013-05-15 Jan Hubicka <jh@suse.cz>
* lto-partition.c (privatize_symbol_name): Return true when
privatizing happened.
(rename_statics): Do not go into infinite loop when privatizing
is not needed.
2013-05-16 Jason Merrill <jason@redhat.com> 2013-05-16 Jason Merrill <jason@redhat.com>
* Make-lang.in ($(LTO_EXE)): Use link mutex. * Make-lang.in ($(LTO_EXE)): Use link mutex.
......
...@@ -766,7 +766,7 @@ lto_balanced_map (void) ...@@ -766,7 +766,7 @@ lto_balanced_map (void)
with symbols defined out of the LTO world. with symbols defined out of the LTO world.
*/ */
static void static bool
privatize_symbol_name (symtab_node node) privatize_symbol_name (symtab_node node)
{ {
tree decl = node->symbol.decl; tree decl = node->symbol.decl;
...@@ -781,7 +781,7 @@ privatize_symbol_name (symtab_node node) ...@@ -781,7 +781,7 @@ privatize_symbol_name (symtab_node node)
fprintf (cgraph_dump_file, fprintf (cgraph_dump_file,
"Not privatizing symbol name: %s. It privatized already.\n", "Not privatizing symbol name: %s. It privatized already.\n",
name); name);
return; return false;
} }
/* Avoid mangling of already mangled clones. /* Avoid mangling of already mangled clones.
??? should have a flag whether a symbol has a 'private' name already, ??? should have a flag whether a symbol has a 'private' name already,
...@@ -793,7 +793,7 @@ privatize_symbol_name (symtab_node node) ...@@ -793,7 +793,7 @@ privatize_symbol_name (symtab_node node)
fprintf (cgraph_dump_file, fprintf (cgraph_dump_file,
"Not privatizing symbol name: %s. Has unique name.\n", "Not privatizing symbol name: %s. Has unique name.\n",
name); name);
return; return false;
} }
change_decl_assembler_name (decl, clone_function_name (decl, "lto_priv")); change_decl_assembler_name (decl, clone_function_name (decl, "lto_priv"));
if (node->symbol.lto_file_data) if (node->symbol.lto_file_data)
...@@ -804,6 +804,7 @@ privatize_symbol_name (symtab_node node) ...@@ -804,6 +804,7 @@ privatize_symbol_name (symtab_node node)
fprintf (cgraph_dump_file, fprintf (cgraph_dump_file,
"Privatizing symbol name: %s -> %s\n", "Privatizing symbol name: %s -> %s\n",
name, IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl))); name, IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (decl)));
return true;
} }
/* Promote variable VNODE to be static. */ /* Promote variable VNODE to be static. */
...@@ -906,11 +907,12 @@ rename_statics (lto_symtab_encoder_t encoder, symtab_node node) ...@@ -906,11 +907,12 @@ rename_statics (lto_symtab_encoder_t encoder, symtab_node node)
&& (!encoder && (!encoder
|| lto_symtab_encoder_lookup (encoder, s) != LCC_NOT_FOUND)) || lto_symtab_encoder_lookup (encoder, s) != LCC_NOT_FOUND))
{ {
privatize_symbol_name (s); if (privatize_symbol_name (s))
/* Re-start from beggining since we do not know how many symbols changed a name. */ /* Re-start from beggining since we do not know how many symbols changed a name. */
s = symtab_node_for_asm (name); s = symtab_node_for_asm (name);
else s = s->symbol.next_sharing_asm_name;
} }
else s = s->symbol.next_sharing_asm_name; else s = s->symbol.next_sharing_asm_name;
} }
/* Find out all static decls that need to be promoted to global because /* Find out all static decls that need to be promoted to global because
......
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