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);

Reply via email to