On Thu, Dec 5, 2019 at 1:50 PM Martin Liška <mli...@suse.cz> wrote: > > Hi. > > As mentioned in the PR, there are classes in cgraph.h that are > not PODs and are initialized with ggc_alloc_cleared. So that I'm suggesting > to use proper constructors. I added ggc_new function that can be used > at different locations as well.
Isn't there ggc_alloc <T> for this? Also ggc_alloc_no_dtor<T> in case you want to handle finalization yourself. > I'm attaching optimized dump file with how ctor expansion looks like. > Patch can bootstrap on x86_64-linux-gnu and survives regression tests. > > Ready to be installed? > Thanks, > Martin > > gcc/ChangeLog: > > 2019-12-05 Martin Liska <mli...@suse.cz> > > PR ipa/92737 > * cgraph.c (symbol_table_test::symbol_table_test): > Use new ggc_new. > * cgraph.h (symtab_node::symtab_node): New constructor. > (cgraph_node::cgraph_node): Likewise. > (varpool_node::varpool_node): Likewise. > (symbol_table::allocate_cgraph_symbol): Use newly > created constructor. > * cgraphunit.c (symtab_terminator): Likewise. > * ggc.h (ggc_new): New. > * toplev.c (general_init): Use new ggc_new. > * varpool.c (varpool_node::create_empty): Use newly > created constructor. > > gcc/c-family/ChangeLog: > > 2019-12-05 Martin Liska <mli...@suse.cz> > > PR ipa/92737 > * c-opts.c (c_common_init_options): Use new ggc_new. > --- > gcc/c-family/c-opts.c | 4 +--- > gcc/cgraph.c | 2 +- > gcc/cgraph.h | 50 ++++++++++++++++++++++++++++++++++++------- > gcc/cgraphunit.c | 2 +- > gcc/ggc.h | 9 ++++++++ > gcc/toplev.c | 2 +- > gcc/varpool.c | 5 ++--- > 7 files changed, 57 insertions(+), 17 deletions(-) > >