On 8 June 2018 at 22:05, Martin Liška <mli...@suse.cz> wrote: > On 06/08/2018 09:58 PM, Christophe Lyon wrote: >> >> 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: > > > Sorry for that. It was just short breakage, it's fixed in r261320. >
OK, good to know. My build queue hasn't reached that stage yet :) Thanks > Martin > > >> /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 >> >