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.
> + else
> + delete item;
> + }
> +
Jakub