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

Reply via email to