> On Tue, Mar 24, 2015 at 10:54:25PM +0100, Martin Liška wrote: > > --- 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) > > + release ((*it).second); > > You haven't removed the now unnecessary if (!m_ggc) guard. > > > @@ -106,6 +112,15 @@ public: > > return m_ggc ? new (ggc_alloc <T> ()) T() : new T () ; > > } > > > > + /* Release an item that is stored within map. */ > > + void release (T *item) > > + { > > + if (m_ggc) > > + ggc_free (item); > > Perhaps run also the item's destructor first? I know that > inline_summary doesn't have a user destructor, so it will expand to nothing, > so it would be just for completeness.
Yep, calling destructors is a good idea. OK with that change and fix Jakub pointed out. Honza > > > + else > > + delete item; > > + } > > + > > Jakub