On Thu, Jun 7, 2018 at 2:36 PM Jan Hubicka <hubi...@ucw.cz> wrote: > > > On Thu, Jun 7, 2018 at 2:19 PM Jan Hubicka <hubi...@ucw.cz> wrote: > > > > > > > > > > > gcc/ChangeLog: > > > > > > > > 2018-04-24 Martin Liska <mli...@suse.cz> > > > > > > > > * cgraph.c (symbol_table::create_edge): Always assign a new > > > > unique number. > > > > (symbol_table::free_edge): Do not recycle numbers. > > > > * cgraph.h (cgraph_edge::get): New method. > > > > * symbol-summary.h (symtab_removal): Use it. > > > > (symtab_duplication): Likewise. > > > > (call_summary::hashable_uid): Remove. > > > > I think we should protect ourselves against overflow of the 'int' > > counter (and make it unsigned?!). > > > > Like with a simple gcc_assert (++edges_max_uid != 0); or so. > > > > We throw away/recompute edges often enough so that we _might_ > > hit 2 billion edges, no? > > We throw away those constant times for every function, but yes, overflow check > is quite likely good idea :)
But you only need enough inline / speculative edges to make it blow up ;) (the inline clones also might make the cgraph number explode in case you manage to do some exponential inline cloning of empty functions...) Richard. > Honza