Message ID | 55116E76.4070405@suse.cz |
---|---|
State | New |
Headers | show |
> Hi. > > In following patch, I've added missing delete call for all item summaries that are > allocated within a function_summary container in case the container does not use > GGC memory allocation. > > Can boostrap on ppc64le and no regression is seen on x86_64-linux-pc. > > Ready for trunk? > Thanks, > Martin > >From c9912b88e8a381e6be7dc1e4be4f7b8859d72e2f Mon Sep 17 00:00:00 2001 > From: mliska <mliska@suse.cz> > Date: Tue, 24 Mar 2015 13:58:50 +0100 > Subject: [PATCH] Fix PR65538. > > gcc/ChangeLog: > > 2015-03-24 Martin Liska <mliska@suse.cz> > > PR tree-optimization/65538 > * symbol-summary.h (function_summary::~function_summary): > Relese memory for allocated summaries in case non-GGC template > instance. > --- > gcc/symbol-summary.h | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/gcc/symbol-summary.h b/gcc/symbol-summary.h > index 8d7e42c..35615ba 100644 > --- a/gcc/symbol-summary.h > +++ b/gcc/symbol-summary.h > @@ -81,6 +81,12 @@ public: > m_symtab_insertion_hook = NULL; > m_symtab_removal_hook = NULL; > m_symtab_duplication_hook = NULL; > + > + /* Release all summaries in case we use non-GGC memory. */ > + typedef typename hash_map <int, T *, summary_hashmap_traits>::iterator map_iterator; > + if (!m_ggc) > + for (map_iterator it = m_map.begin (); it != m_map.end (); ++it) > + delete (*it).second; I think you sould also do the walk with GGC memory and call ggc_free. During WPA we almost never call ggc_collect so it is better to keep things explicitly freed. OK with that change. Honza
From c9912b88e8a381e6be7dc1e4be4f7b8859d72e2f Mon Sep 17 00:00:00 2001 From: mliska <mliska@suse.cz> Date: Tue, 24 Mar 2015 13:58:50 +0100 Subject: [PATCH] Fix PR65538. gcc/ChangeLog: 2015-03-24 Martin Liska <mliska@suse.cz> PR tree-optimization/65538 * symbol-summary.h (function_summary::~function_summary): Relese memory for allocated summaries in case non-GGC template instance. --- gcc/symbol-summary.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/gcc/symbol-summary.h b/gcc/symbol-summary.h index 8d7e42c..35615ba 100644 --- a/gcc/symbol-summary.h +++ b/gcc/symbol-summary.h @@ -81,6 +81,12 @@ public: m_symtab_insertion_hook = NULL; m_symtab_removal_hook = NULL; m_symtab_duplication_hook = NULL; + + /* Release all summaries in case we use non-GGC memory. */ + typedef typename hash_map <int, T *, summary_hashmap_traits>::iterator map_iterator; + if (!m_ggc) + for (map_iterator it = m_map.begin (); it != m_map.end (); ++it) + delete (*it).second; } /* Traverses all summarys with a function F called with -- 2.1.4