On 7 June 2018 at 14:09, Jan Hubicka <hubi...@ucw.cz> wrote: >> >> 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
Hi! This patch broke the GCC build: /tmp/9400570_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/passes.c: In function ‘void remove_cgraph_node_from_order(cgraph_node*, void*)’: /tmp/9400570_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/passes.c:1646: warning: ‘>>’ operator will be treated as two right angle brackets in C++0x /tmp/9400570_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/passes.c:1646: warning: suggest parentheses around ‘>>’ expression /tmp/9400570_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/passes.c:1646: error: ‘removed_nodes’ was not declared in this scope /tmp/9400570_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/passes.c:1646: error: ‘*’ cannot appear in a constant-expression /tmp/9400570_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/passes.c:1646: warning: ‘>>’ operator will be treated as two right angle brackets in C++0x /tmp/9400570_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/passes.c:1646: warning: suggest parentheses around ‘>>’ expression /tmp/9400570_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/passes.c:1646: error: ‘*’ cannot appear in a constant-expression /tmp/9400570_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/passes.c:1646: error: template argument 3 is invalid /tmp/9400570_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/passes.c:1646: error: template argument 1 is invalid /tmp/9400570_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/passes.c:1646: error: template argument 2 is invalid /tmp/9400570_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/passes.c:1646: error: an assignment cannot appear in a constant-expression /tmp/9400570_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/passes.c:1646: error: template argument 3 is invalid /tmp/9400570_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/passes.c:1646: error: template argument 1 is invalid /tmp/9400570_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/passes.c:1646: error: template argument 2 is invalid /tmp/9400570_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/passes.c: In function ‘void do_per_function_toporder(void (*)(function*, void*), void*)’: /tmp/9400570_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/passes.c:1664: warning: ‘>>’ operator will be treated as two right angle brackets in C++0x /tmp/9400570_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/passes.c:1664: warning: suggest parentheses around ‘>>’ expression /tmp/9400570_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/passes.c:1664: error: ‘removed_nodes’ was not declared in this scope /tmp/9400570_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/passes.c:1664: error: template argument 3 is invalid /tmp/9400570_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/passes.c:1664: error: template argument 1 is invalid /tmp/9400570_6.tmpdir/aci-gcc-fsf/sources/gcc-fsf/gccsrc/gcc/passes.c:1664: error: template argument 2 is invalid make[2]: *** [passes.o] Error 1