mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-23 21:31:54 +08:00
Minimize clone counter memory usage in LTO.
gcc/lto: * lto-partition.c (privatize_symbol_name_1): Keep track of non-unique symbol counters in the lto_clone_numbers hash map. (lto_promote_cross_file_statics): Allocate and free the lto_clone_numbers hash map. (lto_promote_statics_nonwpa): Free the lto_clone_numbers hash map. From-SVN: r266693
This commit is contained in:
parent
53aedcce09
commit
ed1b53a0ab
@ -1,3 +1,14 @@
|
||||
2018-11-30 Michael Ploujnikov <michael.ploujnikov@oracle.com>
|
||||
|
||||
Minimize clone counter memory usage in LTO.
|
||||
* lto-partition.c (privatize_symbol_name_1): Keep track of
|
||||
non-unique symbol counters in the lto_clone_numbers hash
|
||||
map.
|
||||
(lto_promote_cross_file_statics): Allocate and free the
|
||||
lto_clone_numbers hash map.
|
||||
(lto_promote_statics_nonwpa): Free the lto_clone_numbers hash
|
||||
map.
|
||||
|
||||
2018-11-28 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* lto.c (lto_read_decls): Fix handling of INTEGER_CST.
|
||||
|
@ -951,6 +951,9 @@ validize_symbol_for_target (symtab_node *node)
|
||||
}
|
||||
}
|
||||
|
||||
/* Maps symbol names to unique lto clone counters. */
|
||||
static hash_map<const char *, unsigned> *lto_clone_numbers;
|
||||
|
||||
/* Helper for privatize_symbol_name. Mangle NODE symbol name
|
||||
represented by DECL. */
|
||||
|
||||
@ -963,9 +966,11 @@ privatize_symbol_name_1 (symtab_node *node, tree decl)
|
||||
return false;
|
||||
|
||||
name = maybe_rewrite_identifier (name);
|
||||
unsigned &clone_number = lto_clone_numbers->get_or_insert (name);
|
||||
symtab->change_decl_assembler_name (decl,
|
||||
clone_function_name_numbered (
|
||||
name, "lto_priv"));
|
||||
clone_function_name (
|
||||
name, "lto_priv", clone_number));
|
||||
clone_number++;
|
||||
|
||||
if (node->lto_file_data)
|
||||
lto_record_renamed_decl (node->lto_file_data, name,
|
||||
@ -1157,6 +1162,8 @@ lto_promote_cross_file_statics (void)
|
||||
part->encoder = compute_ltrans_boundary (part->encoder);
|
||||
}
|
||||
|
||||
lto_clone_numbers = new hash_map<const char *, unsigned>;
|
||||
|
||||
/* Look at boundaries and promote symbols as needed. */
|
||||
for (i = 0; i < n_sets; i++)
|
||||
{
|
||||
@ -1187,6 +1194,7 @@ lto_promote_cross_file_statics (void)
|
||||
promote_symbol (node);
|
||||
}
|
||||
}
|
||||
delete lto_clone_numbers;
|
||||
}
|
||||
|
||||
/* Rename statics in the whole unit in the case that
|
||||
@ -1196,9 +1204,12 @@ void
|
||||
lto_promote_statics_nonwpa (void)
|
||||
{
|
||||
symtab_node *node;
|
||||
|
||||
lto_clone_numbers = new hash_map<const char *, unsigned>;
|
||||
FOR_EACH_SYMBOL (node)
|
||||
{
|
||||
rename_statics (NULL, node);
|
||||
validize_symbol_for_target (node);
|
||||
}
|
||||
delete lto_clone_numbers;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user