Hi. This small stuff handles a misc clang-static-analyzer issues.
Patch can bootstrap on x86_64-linux-gnu and survives regression tests. Ready to be installed? Thanks, Martin gcc/lto/ChangeLog: 2019-06-26 Martin Liska <mli...@suse.cz> * lto-dump.c (struct symbol_entry): Add default dtor. (struct variable_entry): Likewise. (struct function_entry): Likewise. (dump_list_functions): Release memory. (dump_list_variables): Likewise. libgcc/ChangeLog: 2019-06-26 Martin Liska <mli...@suse.cz> * libgcov-util.c (gcov_profile_merge): Release allocated memory. (calculate_overlap): Likewise. --- gcc/lto/lto-dump.c | 19 +++++++++++++++++-- libgcc/libgcov-util.c | 5 +++++ 2 files changed, 22 insertions(+), 2 deletions(-)
diff --git a/gcc/lto/lto-dump.c b/gcc/lto/lto-dump.c index 691d109ff34..e9de33cf5d8 100644 --- a/gcc/lto/lto-dump.c +++ b/gcc/lto/lto-dump.c @@ -44,6 +44,9 @@ struct symbol_entry symbol_entry (symtab_node *node_): node (node_) {} + virtual ~symbol_entry () + {} + char* get_name () const { if (flag_lto_dump_demangle) @@ -72,6 +75,9 @@ struct variable_entry: public symbol_entry variable_entry (varpool_node *node_): symbol_entry (node_) {} + virtual ~variable_entry () + {} + virtual size_t get_size () const { varpool_node *vnode = dyn_cast<varpool_node *> (node); @@ -99,6 +105,9 @@ struct function_entry: public symbol_entry function_entry (cgraph_node *node_): symbol_entry (node_) {} + virtual ~function_entry () + {} + virtual void dump () { symbol_entry :: dump (); @@ -166,7 +175,10 @@ void dump_list_functions (void) int i=0; symbol_entry* e; FOR_EACH_VEC_ELT (v, i, e) - e->dump (); + { + e->dump (); + delete e; + } } /* Dump list of variables and their details. */ @@ -194,7 +206,10 @@ void dump_list_variables (void) int i=0; symbol_entry* e; FOR_EACH_VEC_ELT (v, i, e) - e->dump (); + { + e->dump (); + delete e; + } } /* Dump symbol list. */ diff --git a/libgcc/libgcov-util.c b/libgcc/libgcov-util.c index 6a94b80810b..94d4575c929 100644 --- a/libgcc/libgcov-util.c +++ b/libgcc/libgcov-util.c @@ -680,6 +680,9 @@ gcov_profile_merge (struct gcov_info *tgt_profile, struct gcov_info *src_profile tgt_tail = gi_ptr; } + free (in_src_not_tgt); + free (tgt_infos); + return 0; } @@ -1279,6 +1282,8 @@ calculate_overlap (struct gcov_info *gcov_list1, } + free (all_infos); + if (overlap_obj_level) printf(" SUM:%36s overlap = %6.2f%% (%5.2f%% %5.2f%%)\n", "", sum_val*100, sum_cum_1*100, sum_cum_2*100);