> > gcc/ChangeLog: > > 2018-05-16 Martin Liska <mli...@suse.cz> > > * cgraph.c (cgraph_node::remove): Do not recycle uid. > * cgraph.h (symbol_table::release_symbol): Do not pass uid. > (symbol_table::allocate_cgraph_symbol): Do not set uid. > * passes.c (uid_hash_t): Record removed_nodes by their uids. > (remove_cgraph_node_from_order): Use the removed_nodes set. > (do_per_function_toporder): Likwise. > * symbol-summary.h (symtab_insertion): Use cgraph_node::uid > instead of summary_uid. > (symtab_removal): Likewise. > (symtab_duplication): Likewise. > > gcc/lto/ChangeLog: > > 2018-05-16 Martin Liska <mli...@suse.cz> > > * lto-partition.c (lto_balanced_map): Use cgraph_node::uid > instead of summary_uid.
I am still now convinced that competely moving from arrays made dense by uid recyclic to hash tables is performance-wise smart idea, but current uid is not working very well for this purpose - most summaries we have are only for definitions so we want something like definition uid. In general it seems bad that we allocate same memory for object with definition and external symbol. Something I planned to change but did not get to do that yet. So the patch is OK. With new abstraction we can always re-invent dense uids for this purpose later. Honza